typescript完成日期转换

本人python程序员,最近前端离职导致前端缺人,所以在做前端。简单学了一点typescript
。刚刚接到这样一个需求,要根据不同的时间,转换不同的样式:

需求:

// x(列表显示时间) = y(当前时间) - z(收到消息时间)。x的显示,均采用12小时制。
// 1.收到消息的时间与当前时间在同一天,且间隔小于等于一分钟 「y(Y.M.D)=z(Y.M.D),0min<x<=1min,x取分钟值」。显示格式:刚刚。
// 2.收到消息的时间与当前时间在同一天,但间隔在1分钟到60分钟之间 「y(Y.M.D)=z(Y.M.D),1min<x<60min,x取分钟值」。显示格式:x分钟前。
// 3.收到消息的时间与当前时间在同一天,但间隔大于等于60分钟 「y(Y.M.D)=z(Y.M.D)。显示格式:上午 10:20。
// 4.收到消息的时间是当前时间的前一天 「y(Y.M)=z(Y.M),y(D)-z(D)=1」。显示格式:昨天。
// 5.收到消息的时间是当前时间的前二到六天 「y(Y.M)=z(Y.M),7>y(D)-z(D)>1」。显示格式:星期三。
// 6.收到消息的时间早于当前时间的前七天 「y(Y.M.D)>z(Y.M.D),y(D)-z(D)>=7」。显示格式:10/23。
// 7.收到消息的时间与当前时间不在同一自然年 「y(Y)>z(Y)」。显示格式:2019/01/17 (YYYY/MM/DD)。

JS的日期操作:引用地址

var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间

下面展示完整的代码

// An highlighted block
getFormatTime(t: number) {
 // let _this = this;
   let nowDateTime = new Date();
   let leadTime = nowDateTime.getTime() - t;
   let lastMsgDate = new Date(t);

   // x(列表显示时间) = y(当前时间) - z(收到消息时间)。x的显示,均采用12小时制。
   // 1.收到消息的时间与当前时间在同一天,且间隔小于等于一分钟  「y(Y.M.D)=z(Y.M.D),0min<x<=1min,x取分钟值」。显示格式:刚刚。
   // 2.收到消息的时间与当前时间在同一天,但间隔在1分钟到60分钟之间  「y(Y.M.D)=z(Y.M.D),1min<x<60min,x取分钟值」。显示格式:x分钟前。
   // 3.收到消息的时间与当前时间在同一天,但间隔大于等于60分钟  「y(Y.M.D)=z(Y.M.D)。显示格式:上午 10:20。
   // 4.收到消息的时间是当前时间的前一天  「y(Y.M)=z(Y.M),y(D)-z(D)=1」。显示格式:昨天。
   // 5.收到消息的时间是当前时间的前二到六天  「y(Y.M)=z(Y.M),7>y(D)-z(D)>1」。显示格式:星期三。
   // 6.收到消息的时间早于当前时间的前七天  「y(Y.M.D)>z(Y.M.D),y(D)-z(D)>=7」。显示格式:10/23。
   // 7.收到消息的时间与当前时间不在同一自然年  「y(Y)>z(Y)」。显示格式:2019/01/17 (YYYY/MM/DD)。

   let yesterday = new Date();
   yesterday.setTime(yesterday.getTime()-24*60*60*1000);
   let aWeekAgo = new Date();
   aWeekAgo.setTime(aWeekAgo.getTime()-24*60*60*1000);

   // console.log('nowDateTime',
   //     nowDateTime.getFullYear(),
   //     nowDateTime.getMonth(),
   //     nowDateTime.getDate(),
   //     nowDateTime.getHours(),
   //     nowDateTime.getMinutes(),
   //     // nowDateTime.getTime(),
   // );

   // console.log('yesterday',
   //     yesterday.getFullYear(),
   //     yesterday.getMonth(),
   //     yesterday.getDate(),
   //     yesterday.getHours(),
   //     yesterday.getMinutes(),
   //     yesterday.getTime(), );
   // console.log('aWeekAgo',
   //     aWeekAgo.getFullYear(),
   //     aWeekAgo.getMonth(),
   //     aWeekAgo.getDate(),
   //     aWeekAgo.getHours(),
   //     aWeekAgo.getMinutes(),
   //     aWeekAgo.getTime(), );

   // console.log('lastMsgDate',
   //     lastMsgDate.getFullYear(),
   //     lastMsgDate.getMonth(),
   //     lastMsgDate.getDate(),
   //     lastMsgDate.getHours(),
   //     lastMsgDate.getMinutes(),
   //     // lastMsgDate
   //     );
   // console.log('date', date, Y, M, D, h, m);
   // console.log('t', t);
   // console.log('leadTime', leadTime,);
   let resultDateTimeStr = '';
   if(nowDateTime.getFullYear()!=lastMsgDate.getFullYear()){
       resultDateTimeStr = `${lastMsgDate.getFullYear().toString()}/${(lastMsgDate.getMonth()+1).toString()}/${lastMsgDate.getDate().toString()}`;
   }else if (aWeekAgo.getTime()-t > 0){
           resultDateTimeStr = `${(lastMsgDate.getMonth()+1).toString()}/${lastMsgDate.getDate().toString()}`;
   }else if (yesterday.getTime()-t > 0){
       let weekMap = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
       resultDateTimeStr = weekMap[lastMsgDate.getDay()]
   }else if (
       yesterday.getFullYear()==lastMsgDate.getFullYear() &&
       yesterday.getMonth()==lastMsgDate.getMonth() &&
       yesterday.getDate()==lastMsgDate.getDate()
   ){
       resultDateTimeStr = '昨天'
   }else if (
       nowDateTime.getFullYear()==lastMsgDate.getFullYear() &&
       nowDateTime.getMonth()==lastMsgDate.getMonth() &&
       nowDateTime.getDate()==lastMsgDate.getDate()
   ){
       if (leadTime < 1000 * 60) {
           resultDateTimeStr = '刚刚';
       } else if (leadTime >= 60 * 1000 && leadTime < 60 * 1000 * 60) {
           let m = Math.round(leadTime/(60 * 1000));
           resultDateTimeStr = `${m}分钟前`;
       }else{
           if (lastMsgDate.getHours()<12){
               resultDateTimeStr = '上午 ' + lastMsgDate.getHours().toString + ':' + lastMsgDate.getMinutes().toString()
           }else {
               resultDateTimeStr = '下午 ' + (lastMsgDate.getHours()-12).toString + ':' + lastMsgDate.getMinutes().toString()
           }
       }
   }
   // console.log('resultDateTimeStr', resultDateTimeStr);
   return resultDateTimeStr;
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值