Javascript日期和时间戳(毫秒/秒)相互转化,日期分隔符不同转化结果不同

1、日期格式转为时间戳(UTC方法必须把分隔符转为逗号,其他方法转为反斜杠/,因为横杠-有误差)

4种转换方法:
Date.parse()
Date.UTC() //这个方法有问题,不建议使用
valueOf()
getTime()

(1)valueOf(): 该方法返回日期的毫秒表示,可以方便时间的比较,该方法返回的毫秒数精确到毫秒

var date = new Date();
date.valueOf();
1368283579633

new Date(时间字符串).valueOf();new Date(时间字符串.replace('-','/')).valueOf();

​ new Date(‘2014/4/23’).valueOf()

​ new Date(‘2014/4/23 15:44:25’).valueOf()

​ new Date(‘2014-4-23 15:44:25’.replace(’-’,’/’)).valueOf()

​ new Date(‘2014-4-23 15:44:25:123’.replace(’-’,’/’)).valueOf()

(2)Date.parse():该方法接受一个表示日期的字符串参数,然后尝试根据这个日期返回日期的毫秒数。ECMA-262没有定义该方法支持哪种日期格式,因此这个方法的行为因为浏览器实现而异。如果传入字符串不能表示日期,那么它会返回NaN。该方法返回的毫秒值后三位全为0,精确到秒数,没有毫秒数。

Date.parse("2012年9月9日")
NaN
Date.parse("2012 9 9")
1347120000000
// 毫秒数转换为日期格式
new Date(Date.parse("2012 9 9"))
Sun Sep 09 2012 00:00:00 GMT+0800 (中国标准时间)

Date.parse(时间字符串)或Date.parse(new Date(时间字符串)或Date.parse(new Date(时间字符串.replace('-','/')))

​ Date.parse(‘2012/12/15’)

​ Date.parse(new Date(‘2012/12/15’))

​ Date.parse(new Date(‘2012-12-15’.replace(’-’,’/’)))

(3)getTime(): 返回表示日期的毫秒数,与valueOf()返回的值相同,也精确到毫秒数。

var date = new Date();
date.getTime();
1368283691951

new Date().getTime()或new Date(时间字符串.replace('-','/')).getTime()

new Date(时间字符串).getTime()【IOS无法解析】

(4)Date.UTC(): 该方法也返回表示日期的毫秒数,但是该方法接受的参数是年份、基于0的月份、月份中的哪一天、小时数、分钟、秒以及毫秒。这些参数中只有前两个参数是必需的。(不建议使用)

Date.UTC(12)
NaNDate.UTC(2013,4,11);
1368230400000

示例:

// 1
var strtime = '2014-04-23 18:55:49:123';
var date = new Date(strtime.replace(/-/g, '/'));
var timeStamp = date.valueOf();// 2
var strtime = '2014-04-23 18:55:49:123';
var data = new Date(strtime.replace(/-/g, '/'));
var timeStamp = Date.parse(data);// 3
var strtime = '2014-04-23 18:55:49:123';
var date = new Date(strtime.replace(/-/g, '/'));
var paramTimestamp = date.getTime();// ios无法解析
var date = new Date('2018-06-08 18:00:00');
var paramTimestamp = date.getTime();//4(有问题,不建议使用,获得的结果不一样,如下)
Date.UTC(2021,12,5)//不准确,跟其他三种方法得到的结果不一样,不建议使用
1641340800000
new Date('2021/12/5').valueOf()
1638633600000
new Date('2021/12/5').getTime()
1638633600000
Date.parse('2021/12/5')
1638633600000
Date.UTC(2021-12-5)//不可用
1072915200000
Date.UTC(2021/12/5)//不可用
-1167609600000//示例
Date.UTC(2021,12,5)
1641340800000
new Date("2021-12-5").valueOf()
1638633600000
new Date("2021/12/5").valueOf()
1638633600000
new Date("2021-12-5").getTime()
1638633600000
new Date("2021/12/5").getTime()
1638633600000
Date.parse("2021-12-5")
1638633600000
Date.parse(new Date("2021-12-5"))
1638633600000// 注意
time1 = date.getTime(); // 精确到毫秒
time2 = date.valueOf(); // 精确到毫秒
time3 = Date.parse(date); // 只能精确到秒
time4 = Date.UTC(2021,12,5);//精确到毫秒

区别:

  1. time1 = date.getTime(); // 精确到毫秒
  2. time2 = date.valueOf(); // 精确到毫秒
  3. time3 = Date.parse(date); // 只能精确到秒
  4. time4 = Date.UTC(2021,12,5);//精确到毫秒

2、时间戳转为日期格式

(1)new Date(1637031243978)

new Date(1637031243978)
Tue Nov 16 2021 10:54:03 GMT+0800 (中国标准时间)new Date("2021/12/5")
Sun Dec 05 2021 00:00:00 GMT+0800 (中国标准时间)
typeof('2021/9/78')
'string'
typeof(new Date(1637031243978))
'object'
typeof(new Date('2021/9/78'))
'object'

(2)函数转化

const getTimestampConversion = function (timestamp) {let timeStamplet timeStampLen = timestamp.toString().lengthif (timeStampLen === 10) {timeStamp = timestamp * 1000} else if (timeStampLen === 13) {timeStamp = timestamp} else {timeStamp = timestamp}let date = new Date(timeStamp) // 时间戳为10位需*1000,时间戳为13位的话不需乘1000let Y = (date.getFullYear() + '-')let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'let D = (date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' ')let h = (date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':')let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':')let s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds())return Y + M + D + h + m + s
}export default getTimestampConversion//使用方法如下:
getTimestampConversion(1072915200000)
2004-01-01 08:00:00(转化的结果,个位数会补0,如01)new Date(1072915200000)
Thu Jan 01 2004 08:00:00 GMT+0800 (中国标准时间)
new Date("2004-1-1").valueOf()
1072886400000
new Date("2004-01-01").valueOf()
1072915200000
new Date("2004-01-1").valueOf()
1072886400000
new Date("2004-1-01").valueOf()
1072886400000

注意:

日期格式分隔符如果是-,那么如果日期中补位两个0或一个0跟不补0的结果不一样,比如2021-01-01,那么转化结果和2021-1-1不一样
如果分隔符是/,那么日期格式带不带0无所谓

示例:

new Date("2021/1/1").valueOf()
1609430400000
new Date("2021/01/1").valueOf()
1609430400000
new Date("2021/1/01").valueOf()
1609430400000
new Date("2021/01/01").valueOf()
1609430400000new Date("2021-1-1").valueOf()
1609430400000
new Date("2021-01-1").valueOf()
1609430400000
new Date("2021-1-01").valueOf()
1609430400000
new Date("2021-01-01").valueOf()
1609459200000new Date("2014/4/23").valueOf()
1398182400000
new Date("2014/04/23").valueOf()
1398182400000
new Date("2014-4-23").valueOf()
1398182400000
new Date("2014-04-23").valueOf()
1398211200000

总结:(1)必须把日期格式转为反斜杠/分割

(2)不使用UTC方法

Javascript日期和时间戳(毫秒/秒)相互转化,日期分隔符不同转化结果不同相关推荐

  1. 原生JS实现拿到的时间戳“毫秒/秒”转为“时:分:秒”形式的效果

    在日常编程中,我们向后台数据,请求的可能是视频或者音乐的接口,后端返回给我们的数据中可能是视频或音乐的时长,通常都会给我们返回一个时间戳形式的字符.比如1454646毫秒或者秒.这个时候我们就需要把这 ...

  2. 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳

    有朋友问php与mysql有没有办法把日期转时间戳或把指定日期转换成时间戳呢,其实这个是有并且还非常的简单,下面我来给大家介绍介绍. 一.在MySQL中完成 这种方式在MySQL查询语句中转换,优点是 ...

  3. sql 时间 没有日期_SQL-补充:日期和时间戳互转

    补充:日期和时间戳互转 1. 日期转时间戳 -- 转十位 select UNIX_TIMESTAMP('2018-12-25 12:25:00'); 结果:1545711900 -- 转十三位 SEL ...

  4. Lua 日期转时间戳

    在lua中日期转时间戳需要先进行, 日期字符转table操作,然后才能进行转换,这和大多数语言都是不同的,因此记录一下 function trim(s)return (s:gsub("^%s ...

  5. Javascript获取当前时间戳的方法

    原文地址为: Javascript获取当前时间戳的方法 定义日期: Date 对象用于处理日期和时间. 可以通过 new 关键词来定义 Date 对象.以下代码定义了名为 myDate 的 Date ...

  6. jquery 毫秒转换成日期_基于jQuery的时间戳与日期间的转化

    本文实例为大家分享了jQuery时间戳与日期间的转化代码,供大家参考,具体内容如下 背景: 需求如图: 直接上代码,所有的内容都在注释里: /** * 格式化时间:补0操作 * */ function ...

  7. 常见的javascript日期和时间戳互相转化

    写在前面 前两天写了一篇<常见的Javascript获取时间戳>,今天来一篇续集吧,日期和时间戳的互转 预备知识 知道什么是时间戳:即距离1970年01月01日00时00分00秒的毫秒数( ...

  8. php js 获取当前时间戳,JavaScript 获取当前时间戳的代码_时间日期

    JavaScript 获取当前时间戳: 第一种方法: var timestamp = Date.parse(new Date()); 结果:1280977330000 第二种方法: var times ...

  9. html 时间戳日期转换成字符串,JavaScript时间与时间戳的转换操作实例分析

    本文实例讲述了JavaScript时间与时间戳的转换操作.分享给大家供大家参考,具体如下: 一.时间转时间戳:javascript获得时间戳的方法有五种,都是通过实例化时间对象 new Date() ...

最新文章

  1. php中使用phpmailer发送邮件
  2. UBUNTU上VNC 配置
  3. 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
  4. 第5章 Python 数字图像处理(DIP) - 图像复原与重建5 - 均匀噪声
  5. CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
  6. 搜索图片及相似度探秘 二
  7. 设置不显示用户名和主机名_谁说Excel中不可以有聚光灯效果:Excel高亮显示设置...
  8. Acey.ExcelX4.2版本发布
  9. android图片显示代码,Android图片处理:识别图像方向并显示(示例代码)
  10. 读《那些年,那些事 一个程序猿的奋斗史》 一点自己的感触
  11. 人大金仓数据库软件下载
  12. fedora linux五笔输入法,教你在Fedora 14 下安装五笔输入法
  13. 微信朋友圈设计方案简述
  14. 51单片机—红外遥控
  15. XYPC一款实用的平面测量控制网平差软件
  16. flag计算机领域的意思,flag是什么意思
  17. 磁盘列阵(RAID)
  18. 《鱿鱼游戏》我怕了,还是整点阳间的游戏吧,Python版“碰糖”来袭—你能过几关?
  19. Codeforces Round #807 (Div. 2) A-D
  20. Don Box博客中文版入驻CSDN,志愿者翻译招募中....

热门文章

  1. Https双向认证Android客户端配置
  2. 批量修改文件夹/文件名的小技巧
  3. sqlserver到Oracle,SQLSERVER到ORACLE的数据库迁移
  4. MathType公式行间距与文档参数不统一的解决办法
  5. Python_哔哩哔哩弹幕可视化
  6. 黑帽子Python——基础的网络编程工具——TCP的客户端和服务端
  7. 正交函数集与信号在正交函数集上的分解
  8. 软件工程之面向对象的设计原则
  9. IT界CICD新词-Dummy
  10. Briefings in Bioinformatics2021 | 从头药物设计的深度生成模型的综合性评估