前端面试---时间转化

在日常开发中,我们需要对时间进行转化和处理,尤其是电商类的抽奖活动,抢购的活动,做不好就是线上bug,也有很多坑

首先看下面一道面试题:

此问题来自小程序的云开发过程,在小程序云开发中,我们需要添加一个属性,类型为date,在操作窗口时,显示正常,但是显示中就是上面的data.create_time,前端需要转化处理,这里大家是不是第一反应就是filter,没错,如果用了vue,react,angular都可以去过滤;而小程序过滤有点区别;这里不讲了,进入今天面试题的主流程

var formatDate = function (timestamp, option) {
  var date = getDate(timestamp);
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()
  var hour = function () {
    if (date.getHours() < 10) {  //补‘0’
      return '0' + date.getHours()
    }
    return date.getHours();
  }
  var minute = function () {
    if (date.getMinutes() < 10) {
      return '0' + date.getMinutes()
    }
    return date.getMinutes();
  }
  var second = function () {
    if (date.getSeconds() < 10) {
      return '0' + date.getSeconds()
    }
    return date.getSeconds();
  }

  if (option == 'notime') {  //不需要时间
    return year + '-' + month + '-' + day;
  }

  return year + '-' + month + '-' + day + ' ' + hour() + ':' + minute() + ":" + second();
}

module.exports = {
  formatDate: formatDate,
};

1.注意上面的实现方法是基于小程序的时间方法,并不是js;

2.上面的代码我们实现前两种输入

 

var formatDate = function (timestamp, option) {
  var date = getDate(timestamp);
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()
  var hour = function () {
    if (date.getHours() < 10) { 
      if(option==3){
        if (0){
          return '凌晨'+date.getHours()
        }
        if (6<=date.getHours()&&date.getHOurs()<=12){
          return '上午' + date.getHours()
        } 
        if (date.getHours()<18){
          return '下午' + date.getHours()
        }
        if(date.getHours()<=24){
          return '晚上' + date.getHours()
        }
      } //补‘0’
      return '0' + date.getHours()
    }
    return date.getHours();
  }
  var minute = function () {
    if (date.getMinutes() < 10) {
      return '0' + date.getMinutes()
    }
    return date.getMinutes();
  }
  var second = function () {
    if (date.getSeconds() < 10) {
      return '0' + date.getSeconds()
    }
    return date.getSeconds();
  }

  if (option == 'notime') {  //不需要时间
    return year + '-' + month + '-' + day;
  }
  if (option==3){
    return year+'年'+month+'月'+day+' '+hour()+'时'+minute()+'分'
  }
  return year + '-' + month + '-' + day + ' ' + hour() + ':' + minute() + ":" + second();
}

module.exports = {
  formatDate: formatDate,
};

 

显示就是下面的日期

 

前端面试---时间转化_第1张图片

好了,小程序的算是告一段落了,下面进入js时代:

总结知识点:

1.三元运算符使用

2.switch使用

3.Date对象的使用, 获取年 getFullYear(),获取月份getMonth(),注意这里+1

4.数组的结合使用

 

 

优化上面的代码

今日面试题:

图中的箭头你有几种实现方式,css编写请写下来

你可能感兴趣的:(前端面试---时间转化)