时刻api方法计算今天的时间,以毫秒为单位

时间:2016-10-11 16:53:45

标签: javascript momentjs

var timeArr = moment().format('HH:mm').split(':');
var timeInMilliseconds = (timeArr[0] * 3600000) + (timeArr[1] * 60000);

这是我目前的解决方案。我宁愿用moment api计算今天的时间(今天凌晨12点以后的时间),以毫秒为单位。

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

示例:

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

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

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")

答案 1 :(得分:0)

您可以使用以下功能:

  • 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转换。