Moment.JS - 使用时刻将两位数值更改为毫秒

时间:2016-05-19 08:07:45

标签: javascript momentjs

目前我有一个输入字段,允许您通过输入两位数来选择一小时。例如,您可以选择12小时12小时。

使用MomentJS有没有办法使用瞬间将该数字转换为毫秒?

目前我不得不做以下数学。我无法在Moment文档中看到这是可行的。

var timeHH = scope.session.timeHH * 3600;

这可以解决秒数问题,然后我会以毫秒为单位将其计算为毫秒数。

3 个答案:

答案 0 :(得分:5)

  

是否有办法使用片刻将该数字转换为 mini 毫秒使用时刻?

可能有,但绝对没有理由为此使用MomentJS,这样做会很迂回,效率低下。它很简单:hours * 3600000是毫秒。没有奇怪的特殊情况需要处理等,除非您正在处理转换特定时间段的实时(例如,格林威治标准时间2005年12月31日晚上8点10小时)并且想要处理闰秒插入(那天晚上有一个午夜),但MomentJS无论如何也不会这样做。

答案 1 :(得分:1)

对于这个特定的用例,正确的做法是手动计算。为了完整起见,如果您需要进行更复杂的计算,要使用Moment执行此操作,您将使用持续时间类型。持续时间类型允许您从一个单位值转换为另一个单位值,如果您必须进行多次单位转换而不是仅仅这一次,那么这将是一个不错的选择。

moment.duration(12, 'hours').asMilliseconds()
43200000

除了转换为毫秒之外,您还可以转换为任何其他单位:

var dur = moment.duration(12, 'hours');
dur.asMilliseconds();
43200000
dur.asDays();
0.5
dur.asYears();
0.001368953503494254

除了as函数之外,您还可以了解持续时间的各个部分:

var dur = moment.duration(12.5, 'hours'); 
dur.hours();
12
dur.minutes();
30
dur.seconds();
0

或者调用humanize来获得一个人类可读的字符串,它是对持续时间长度的估计:

var dur = moment.duration(42, 'hours'); 
dur.humanize();
"2 days"

你也可以用持续时间做数学。有关详细信息,请参阅文档:http://momentjs.com/docs/#/durations/

答案 2 :(得分:0)

您可以尝试以下黑客攻击(假设24小时格式的小时数):

var momObj = moment('12', 'HH');
var x = momObj.diff(moment().startOf('day'));
console.log(x) //43200000