js 时间戳转换,全网最牛业务逻辑解析,逐行解析代码,千万不要错过,里面有些错误场景你可能还不知道
创始人
2024-05-30 18:29:55
0

 一、注意事项

1、js只识别13位的时间戳

2、10位的是unix时间戳

 

二、小试牛刀--日期类型转换成时间戳

可先将js字符串转换为date类型,再转换为时间戳类型。
字符串格式为 yyyy-MM-dd HH:mm:ss或者yyyy-MM-dd

//把字符串转换成时间格式
let date = new Date('2023-11-12 13:14:15:16');// 精确到毫秒
let time1 = date.getTime();// 精确到毫秒
let time2 = date.valueOf();// 精确到秒
let time3 = Date.parse(date);
console.log(time1)
console.log(time2)
console.log(time3)// 输出结果
// 1699766055016
// 1699766055016
// 1699766055000
console.log('time1=='+time1,'长度:'+time1.toString().length)
console.log('time2=='+time2,'长度:'+time2.toString().length)
console.log('time3=='+time3,'长度:'+time3.toString().length)// 输出结果
time1==1699766055016 长度:13
time2==1699766055016 长度:13
time3==1699766055000 长度:13

time1、time2:会精确到毫秒,
time3:只能精确到秒,毫秒用000替代,

----------
注意:获取到的时间戳除以1000就可获得Unix时间戳,再传值给后台。

----------

 

三、时间方法

Date() 返回当日的日期和时间。 

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 

getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 

getMonth() 从 Date 对象返回月份 (0 ~ 11)。 

getFullYear() 从 Date 对象以四位数字返回年份。 

getYear() 请使用 getFullYear() 方法代替。 

getHours() 返回 Date 对象的小时 (0 ~ 23)。 

getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 

getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 

getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 

getTime() 返回 1970 年 1 月 1 日至今的毫秒数。 

getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。 

getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 

getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 

getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。 

getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。 

getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。 

getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。 

getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 

getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。 

parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 

setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。 

setMonth() 设置 Date 对象中月份 (0 ~ 11)。 

setFullYear() 设置 Date 对象中的年份(四位数字)。 

setYear() 请使用 setFullYear() 方法代替。 

setHours() 设置 Date 对象中的小时 (0 ~ 23)。 

setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。 

setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。 

setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。 

setTime() 以毫秒设置 Date 对象。 

setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 

setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。 

setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。 

setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。 

setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 

setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。 

setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 

toSource() 返回该对象的源代码。 

toString() 把 Date 对象转换为字符串。 

toTimeString() 把 Date 对象的时间部分转换为字符串。 

toDateString() 把 Date 对象的日期部分转换为字符串。 

toGMTString() 请使用 toUTCString() 方法代替。 

toUTCString() 根据世界时,把 Date 对象转换为字符串。 

toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。 

toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。 

UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

四、时间在安卓、苹果、IE浏览器上的差异化,或你可能遇到一些奇葩的时间格式

第一种:2022:08:16 12:00:00

第二种:2022-08-16 12:00:00

第三种:2020-10-27T14:36:23

1.这个很明显,第一种不是 理想时间格式,我们需要转换下

var time = '2022:08:16 12:00:00';new Date(time);//会报错var timeArray=time.split(' ');//分割var _time1=timeArray[0];//只赋值日期部分_time1=_time1.replace(/:/g,'/');//把:替换成/time=_time1+' '+timeArray[1];//连接成可解析的时间格式new Date(time);//不报错

运行结果 

 

2.在某些情况下,或者说某些浏览器里不识别带-分隔符的日期格式,我们同样需要转换,我记得IE是不识别带-分隔符的日期格式

var time = '2022-08-16 12:00:00';time=time.replace(/-/g,'/');//把-替换成/new Date(time);//不报错

运行结果 

 五、时间戳转换核心方法

调用时如果传空则是当前日期 

/*** 时间戳转换* */
function DateTimeConvert(time, type) {var d= new Date(); if(time==''||time=='null'||time==undefined){d= new Date();} else if(time.toString().length==10) {//js只识别13位的时间戳,一般情况下后端的时间戳是10位的time = Number(time)*1000;d= new Date(time); }else if(time.toString().length==13){time = Number(time);d= new Date(time); }else{console.error('时间戳格式错误');return false;}var year = d.getFullYear();var month = d.getMonth() + 1;var day = d.getDate();var hours = d.getHours();var min = d.getMinutes();var seconds = d.getSeconds();if (month < 10) month = '0' + month;if (day < 10) day = '0' + day;if (hours < 0) hours = '0' + hours;if (min < 10) min = '0' + min;if (seconds < 10) seconds = '0' + seconds;var res = "";switch (type) {case 'yyyy-mm-dd':res = (year + '-' + month + '-' + day);break;case 'yyyy-mm-dd hh:mm':res = (year + '-' + month + '-' + day + ' ' + hours + ':' + min);break;default:res = (year + '-' + month + '-' + day + ' ' + hours + ':' + min + ':' + seconds);break;}return res;
};


参考文章 

文章一:

js 中日期转换成时间戳
https://www.cnblogs.com/mmzz3322/p/11218017.html

文章二:

时间戳转换js
https://blog.csdn.net/L_15737525552/article/details/126370583


延伸阅读

js将时间转换成时间戳10位_js 日期转10位时间戳_橙-极纪元的博客-CSDN博客

js 获取时间戳 和随机数_js取时间戳的随机数_橙-极纪元的博客-CSDN博客

js 时间戳格式转换常规时间格式_js日期格式转化为常规格式_橙-极纪元的博客-CSDN博客

js将/Date(1642563573347)/转成可读的日期格式,js时间戳转换可读的日期格式_js /date(16725_橙-极纪元的博客-CSDN博客

JS 时间运算大全_11:20-7:50怎么算 js_橙-极纪元的博客-CSDN博客

万能js时间日期格式转换_橙-极纪元的博客-CSDN博客

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...