JS中加号+的用法 / 使用moment格式化时间戳

文章讲述了在处理后端传来的13位时间戳时,如何使用moment.js进行格式转换,遇到Invaliddate问题的原因是数据类型转换。作者介绍了使用Number()、parseInt()和加号运算符将字符串转为数字的方法,以及处理空时间戳的注意事项。
摘要由CSDN通过智能技术生成

昨天改bug时看到一个特别的写法,来研究下~
在这里插入图片描述

1、需求

后端传来的数据是addTime: “1702454525256”,前端要把13位时间戳转成YYYY-MM-DD HH:mm:ss这种格式,即2023-12-13 16:02:05。

2、尝试

(1)最开始直接写的:

this.moment(row.addTime).format('YYYY-MM-DD HH:mm:ss')

却显示Invalid date
在这里插入图片描述
(2)后来发现该页面原本的时间格式化函数有这样两行:

let res = moment(+data).format('YYYY-MM-DD HH:mm:ss')
return res

于是照猫画虎,添了个加号+,就能实现了

this.moment(+row.addTime).format('YYYY-MM-DD HH:mm:ss')

在这里插入图片描述

(3)另外还看到别的页面用的Number()函数或parseInt()函数,也实现了

this.moment(Number(row.addTime)).format('YYYY-MM-DD HH:mm:ss')
this.moment(parseInt(row.addTime)).format('YYYY-MM-DD HH:mm:ss')

3、总结

(1)moment转化时间戳出现Invalid date,原因在于数据传递过程中值的类型发生了变化,所以把字符串转成数字类型后方可正常显示。
而JS中字符串转数字有多种方法,常用的有:
①Number()函数
②parseInt()函数
③一元加号运算符+

(2)还有个需要注意的地方,如果传来的时间戳为空,用moment后会显示1970-01-01 08:00:00
在这里插入图片描述
所以必须判空,可使用三目运算符或者if else来处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值