目前我有一个输入字段,允许您通过输入两位数来选择一小时。例如,您可以选择12小时12小时。
使用MomentJS有没有办法使用瞬间将该数字转换为毫秒?
目前我不得不做以下数学。我无法在Moment文档中看到这是可行的。
var timeHH = scope.session.timeHH * 3600;
这可以解决秒数问题,然后我会以毫秒为单位将其计算为毫秒数。
答案 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