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;
}
typescript完成日期转换相关推荐
- angular 字符串转换成数字_Angular日期在TypeScript中格式化转换应用
组件模板中我们常常使用Angular内置管道DatePipe将其日期格式化,如同{{ startTime | date:'yyyy-MM-dd' }}这般操作,即可转换为字符串格式.那么在TS文件中我 ...
- mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全
Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...
- 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29
def date_conversion(self,date): '''将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29''' c = list(re.findall( ...
- atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换
atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3 ...
- oracle时间戳-日期转换
为什么80%的码农都做不了架构师?>>> 日期转换毫秒 Sql代码 SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY- ...
- sql server datetime格式_为什么你SQL Server中SQL日期转换出错了呢?
开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的.但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(隐藏的炸弹而已,只是等触发条件而已 ...
- oracle 日期改字符格式_oracle怎么把数值型日期转换成日期字符型
展开全部 oracle把数值型日期转换bai成日期字符du型的操作方法和详细步骤zhi如下: 1.首先dao,将字符串类型版转换为权数字类型. 此方法使用to_number()直接进行转换. 具体语法 ...
- Hive 数仓中常见的日期转换操作
(1)Hive 数仓中一些常用的dt与日期的转换操作 下面总结了自己工作中经常用到的一些日期转换,这类日期转换经常用于报表的时间粒度和统计周期的控制中 日期变换: (1)dt转日期 to_date(f ...
- python各种类型日期转换大全
最近写python做各种日期转换比较多,顺便总结一下,先上张图: 1 # 根据字符串类型转日期 返回值类型<class 'time.struct_time'> 2 st_time = ti ...
最新文章
- linux编程能否用于windows,使R包在Windows和Linux中都可以工作
- QT入门安装篇+helloworld(辛酸血泪)
- 高淇python讲义百度文库_python 面向对象01
- 逻辑漏洞挖掘初步总结篇
- java进阶之注解篇
- cf1523A. Game of Life
- python中execute函数_Python中的函数定义与参数使用
- JVM学习笔记-03-类加载器及双亲委派机制
- qt调用Linux脚本范例,QT下实现对Linux Shell调用的几种方法
- 基于Session的认证方式_实现授权功能_Spring Security OAuth2.0认证授权---springcloud工作笔记118
- vscode 翻译_前端新手 VSCode 入门指南
- mac java安全_关于 Java for Mac OS X 10.4 发行版 7 的安全性内容
- 计算机二级C语言程序设计 第一章 程序设计基本概念
- 如何彻底删掉360安全卫士,删除顽固的DLL文件
- 计算机处理汉字信息时所使用的代码是,计算机处理汉字信息时所用的代码是什么...
- 体系结构复习2——指令级并行(分支预測和VLIW)
- 工具类记录之Guawa的Splitter
- C# 蓝牙编程(InTheHand.Net.Personal.dll-32feet),教程地址
- 百度搜索 屏蔽百家号
- 数据链路层-1 什么是数据链路层和工作原理
热门文章
- 【PTA】【C语言】复盘练习——编程题
- 如何用 Redis 查询 “附近的人” ?
- 腾讯云iis8.5新建网站无法访问_如何建立自己的网站(零基础小白教程一)
- java qq协议 php_PHP使用SMTP协议发送邮件
- 房地产调控不当必将引发中国经济危机,中国的经济危机不是不会到来,而是尚未到来,是滞后到来,也将由房地产泡沫的破灭而引发(原创首发,深度好文)——何学林房地产大策划之六
- HTML5期末大作业:官网时尚购物(网站设计——美丽说官网时尚购物(1页) HTML+CSS+JavaScript 网页设计成品DW静态网页Html5响应式css3
- 个人信息保护法相关法律法规学习和梳理
- 智慧路灯行业市场规模有多大?
- selenium爬虫浏览器驱动怎么安装,找不到urs/local/bin文件夹
- Linux LVM逻辑卷管理及扩容(二)