热门搜索 :
考研考公
您的当前位置:首页正文

坑人的Date 对象

来源:东饰资讯网

1.写一个函数getChIntv,获取从当前时间到指定日期的间隔时间

function getChIntv(timeStr){
  var arr = timeStr.split('-')  //把时间字符串切割成数组
  console.log(arr);             //["2018", "02", "15"]
  arr[1] = parseInt(arr[1]);    //把月份02转化成2
  timeStr = arr.join('-');      //把数组连接成时间字符串
  console.log(timeStr);         //2018-2-15
  var timeEnd = new Date(timeStr).getTime();
  var timeStart = Date.now();
  var time = timeEnd - timeStart;
  var day = parseInt(time / (1000*86400));
  var hour = parseInt(time % (1000*86400) / (1000*3600));
  var minute = parseInt(time % (1000*86400) % (1000*3600) / (1000*60));
  var second = parseInt(time % (1000*86400) % (1000*3600) % (1000*60) / 1000 );
  return "距除夕还有" + day + "天" + hour + "小时"+minute + "分"+ second + "秒";
}

var str = getChIntv("2018-02-15");    // 2018年的除夕公历
console.log(str);  // 距除夕还有307天10小时21分18秒

这里2018-02-15 转化的时间是格林威治的标准时区的时间,2018-2-15转化后是本地的北京时间,做过测试,会差8个小时时区时间,所以我才费劲吧这个0去掉,Date对象真坑!!!

2.把hh-mm-dd格式数字日期改成中文日期

function getChsDate(timeStr){
  dict = ['零','一','二','三','四','五','六','七','八','九','十',
          '十一','十二','十三','十四','十五','十六',
          '十七','十八','十九','二十','二十一','二十二',
          '二十三','二十四','二十五','二十六','二十七',
          '二十八','二十九','三十','三十一']
  var timeArr = timeStr.split('-');
  var year = "", month = "", day = "";
  for(var i in timeArr[0]){
    year += dict[timeArr[0][i]];
  }
  month += dict[parseInt(timeArr[1])];
  day += dict[parseInt(timeArr[2])]
  return year + "年" + month + "月" + day + "日";
}

var str = getChsDate('2015-01-08');
console.log(str);     //二零一五年一月八日

3.写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:

function friendlyDate(time){
  var timeStart = parseInt(time);
  var timeEnd = Date.now();
  var time = timeEnd - timeStart;
  if(time < 1000*60){
    return "刚刚";
  }else if(time < 1000*60*60){
    return "3分钟前";    
  }else if(time < 1000*60*60*24){
    return "8小时前";    
  }else if(time < 1000*60*60*24*30){
    return "3天前";    
  }else if(time < 1000*60*60*24*30*12){
    return "2个月前";    
  }else{
    return "8年前";    
  }
}
var str = friendlyDate( '1492065298587' )  //  刚刚
var str2 = friendlyDate('1491005298587')   //  3天前
Top