该服务以ISO 8601
格式返回过去的日期时间,如2018-03-23T08:00:00Z
,以及PnYnMnDTnHnMnS
格式的持续时间,如:PT3H
。从这两个值我需要计算持续时间结束的日期时间。所以在我的情况下,它将是2018-03-23T11:00:00Z
。
我正在使用moment.js
。问题是,当我要获得持续时间结束日期时间时,它会返回一个人类可读的字符串,如in xy hours
。
我面临的问题:
PT3H
,则应返回in 3 hours
,但会返回in 9 hours
。我的代码:
let dur = moment.duration("PT3H");
let myDate = moment("2018-03-23T08:00:00Z");
myDate.from(dur); // It returns "in 9 hours"
答案 0 :(得分:1)
您可以使用add(Duration)
将持续时间添加到您的日期,然后使用from
。
请注意,from
接受:Moment|String|Number|Date|Array
,而在您的代码中,您传递的是持续时间(dur
)。
您可以使用diff
来获得以毫秒为单位的差异。
如果您想获得片刻对象的Unix时间戳,可以使用valueOf()
。
这是一个实时样本:
let dur = moment.duration("PT3H");
let myDate = moment("2018-03-23T08:00:00Z");
let m2 = myDate.clone().add(dur);
console.log(m2.from(myDate));
let diff = m2.diff(myDate);
console.log(diff);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js"></script>