【问题标题】:moment api method to calculate Today's time in milliseconds以毫秒为单位计算今天时间的moment api方法
【发布时间】:2026-02-03 18:50:01
【问题描述】:
var timeArr = moment().format('HH:mm').split(':');
var timeInMilliseconds = (timeArr[0] * 3600000) + (timeArr[1] * 60000);

这是我目前的解决方案。我宁愿使用moment api 以毫秒为单位计算今天的时间(从今天凌晨 12:00 开始的时间)。

我的代码以毫秒为单位返回今天的时间。我需要在几毫秒内调用另一个函数。我不能使用时代。我需要以毫秒为单位的今天时间。

例子:

9:00am = 3.24e+7 milliseconds 
9:00pm = 6.84e+7 milliseconds.

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您可以尝试以下方法:

    var moment = require("moment");
    // Compute the time in milliseconds assuming it's 1AM now
    moment("1:00","HH:mm")-moment("00:00","HH:mm")
    // 3600000
    
    
    // Compute the time in milliseconds assuming it's 9AM now
    moment("9:00","HH:mm")-moment("00:00","HH:mm")
    // 32400000
    
    // Compute the time in milliseconds assuming it's 9PM now
    moment("21:00","HH:mm")-moment("00:00","HH:mm")
    // 75600000
    
    // For current time
    moment()-moment("00:00","HH:mm")
    

    【讨论】:

    • //对于当前时间 moment()-moment("00:00","HH:mm")
    • //对于当前时间 moment()-moment("00:00","HH:mm")
    • Idk 如何删除我的 cmets ^ 但这似乎有效,但我只是不明白为什么。通读文档,找不到。
    【解决方案2】:

    您可以使用以下功能:

    • moment() - 这为您提供当前时刻(“现在”)
    • startOf('day') - 这给了你一天的第一刻
    • diff - 这会计算两个时刻之间的差异

    把它放在一起:

    moment().diff(moment().startOf('day'))
    

    默认单位是毫秒,所以你不需要指定它们。

    这为您提供了自一天开始以来经过的毫秒数。但是,请注意,在某些时区(例如巴西),DST 弹簧向前过渡恰好发生在午夜时分——在这些日子里,时钟从 23:59:59 变为 01:00:00,所以一天的第一刻可能不是午夜!在这种情况下,上述函数返回的值可能与您的预期相差一个小时。它确实是从一天开始的返回时间,而不是从“午夜”开始的时间。

    为了弥补这种可能性,您可以改为执行以下操作:

    moment().utcOffset(0, true).diff(moment().utcOffset(0, true).startOf('day'))
    

    utcOffset(0, true) 将切换到 UTC 模式,同时保持本地时间不变。这比第一个示例稍微复杂一些,但可以完成工作,因为 UTC 从未经历过 DST 转换。

    【讨论】: