本人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;
}

typescript完成日期转换相关推荐

  1. angular 字符串转换成数字_Angular日期在TypeScript中格式化转换应用

    组件模板中我们常常使用Angular内置管道DatePipe将其日期格式化,如同{{ startTime | date:'yyyy-MM-dd' }}这般操作,即可转换为字符串格式.那么在TS文件中我 ...

  2. mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...

  3. 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29

    def date_conversion(self,date): '''将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29''' c = list(re.findall( ...

  4. atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换

    atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3 ...

  5. oracle时间戳-日期转换

    为什么80%的码农都做不了架构师?>>>    日期转换毫秒 Sql代码 SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY- ...

  6. sql server datetime格式_为什么你SQL Server中SQL日期转换出错了呢?

    开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的.但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(隐藏的炸弹而已,只是等触发条件而已 ...

  7. oracle 日期改字符格式_oracle怎么把数值型日期转换成日期字符型

    展开全部 oracle把数值型日期转换bai成日期字符du型的操作方法和详细步骤zhi如下: 1.首先dao,将字符串类型版转换为权数字类型. 此方法使用to_number()直接进行转换. 具体语法 ...

  8. Hive 数仓中常见的日期转换操作

    (1)Hive 数仓中一些常用的dt与日期的转换操作 下面总结了自己工作中经常用到的一些日期转换,这类日期转换经常用于报表的时间粒度和统计周期的控制中 日期变换: (1)dt转日期 to_date(f ...

  9. python各种类型日期转换大全

    最近写python做各种日期转换比较多,顺便总结一下,先上张图: 1 # 根据字符串类型转日期 返回值类型<class 'time.struct_time'> 2 st_time = ti ...

最新文章

  1. linux编程能否用于windows,使R包在Windows和Linux中都可以工作
  2. QT入门安装篇+helloworld(辛酸血泪)
  3. 高淇python讲义百度文库_python 面向对象01
  4. 逻辑漏洞挖掘初步总结篇
  5. java进阶之注解篇
  6. cf1523A. Game of Life
  7. python中execute函数_Python中的函数定义与参数使用
  8. JVM学习笔记-03-类加载器及双亲委派机制
  9. qt调用Linux脚本范例,QT下实现对Linux Shell调用的几种方法
  10. 基于Session的认证方式_实现授权功能_Spring Security OAuth2.0认证授权---springcloud工作笔记118
  11. vscode 翻译_前端新手 VSCode 入门指南
  12. mac java安全_关于 Java for Mac OS X 10.4 发行版 7 的安全性内容
  13. 计算机二级C语言程序设计 第一章 程序设计基本概念
  14. 如何彻底删掉360安全卫士,删除顽固的DLL文件
  15. 计算机处理汉字信息时所使用的代码是,计算机处理汉字信息时所用的代码是什么...
  16. 体系结构复习2——指令级并行(分支预測和VLIW)
  17. 工具类记录之Guawa的Splitter
  18. C# 蓝牙编程(InTheHand.Net.Personal.dll-32feet),教程地址
  19. 百度搜索 屏蔽百家号
  20. 数据链路层-1 什么是数据链路层和工作原理

热门文章

  1. 【PTA】【C语言】复盘练习——编程题
  2. 如何用 Redis 查询 “附近的人” ?
  3. 腾讯云iis8.5新建网站无法访问_如何建立自己的网站(零基础小白教程一)
  4. java qq协议 php_PHP使用SMTP协议发送邮件
  5. 房地产调控不当必将引发中国经济危机,中国的经济危机不是不会到来,而是尚未到来,是滞后到来,也将由房地产泡沫的破灭而引发(原创首发,深度好文)——何学林房地产大策划之六
  6. HTML5期末大作业:官网时尚购物(网站设计——美丽说官网时尚购物(1页) HTML+CSS+JavaScript 网页设计成品DW静态网页Html5响应式css3
  7. 个人信息保护法相关法律法规学习和梳理
  8. 智慧路灯行业市场规模有多大?
  9. selenium爬虫浏览器驱动怎么安装,找不到urs/local/bin文件夹
  10. Linux LVM逻辑卷管理及扩容(二)