从过去的日期时间+持续时间获取日期时间

时间:2018-03-23 09:11:59

标签: momentjs

该服务以ISO 8601格式返回过去的日期时间,如2018-03-23T08:00:00Z,以及PnYnMnDTnHnMnS格式的持续时间,如:PT3H。从这两个值我需要计算持续时间结束的日期时间。所以在我的情况下,它将是2018-03-23T11:00:00Z。 我正在使用moment.js。问题是,当我要获得持续时间结束日期时间时,它会返回一个人类可读的字符串,如in xy hours

我面临的问题:

  1. 返回错误的持续时间。如果我有PT3H,则应返回in 3 hours,但会返回in 9 hours
  2. 结束日期时间应以毫秒为单位,目前为人类可读形式"
  3. 我的代码:

    let dur = moment.duration("PT3H");
    let myDate = moment("2018-03-23T08:00:00Z");
    myDate.from(dur); // It returns "in 9 hours"
    

    JsBin

1 个答案:

答案 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>