Moment.js获取时间戳及日期操作后获取时间戳的问题咨询
嘿,我来帮你搞定这两个Moment.js的问题~
问题1:如何使用Moment.js获取时间戳?
Moment.js提供了两种常用的获取时间戳的方法,根据你需要的精度选择就行:
- 毫秒级时间戳:用
valueOf()方法,返回从Unix纪元(1970-01-01 00:00:00 UTC)到目标时间的毫秒数// 当前时间的毫秒级时间戳 const currentTimestampMs = moment().valueOf(); - 秒级时间戳:用
unix()方法,返回秒数(自动截断毫秒部分)// 当前时间的秒级时间戳 const currentTimestampSec = moment().unix();
问题2:调整日期后如何获取时间戳?
你的代码执行失败的原因很明确:.calendar()方法返回的是人类友好的格式化日期字符串(比如"Last Monday at 2:30 PM"),而不是Moment对象,所以你调用.getTime()的时候,字符串根本没有这个方法,自然会报错。
正确的做法是:调整日期(比如subtract)之后,直接在Moment对象上调用valueOf()或unix()来获取时间戳,不需要经过.calendar()这一步。
示例代码:
// 获取10天前的毫秒级时间戳 const tenDaysAgoTimestampMs = moment().subtract(10, 'days').valueOf(); // 如果需要秒级时间戳,换成unix() const tenDaysAgoTimestampSec = moment().subtract(10, 'days').unix();
如果你的需求是既要查看格式化后的日期,又要获取时间戳,可以把Moment对象先存起来,再分别操作:
const tenDaysAgo = moment().subtract(10, 'days'); // 查看格式化后的日历样式日期 console.log(tenDaysAgo.calendar()); // 获取时间戳 const timestamp = tenDaysAgo.valueOf();
内容的提问来源于stack exchange,提问作者qg_java_17137
相关产品推荐
相关产品推荐

