将AMAZON.DURATION添加到当前时间

时间:2016-03-05 05:22:52

标签: node.js alexa-skills-kit

我正在编写一个Alexa技能,我希望将记录存储在未来时间的数据库中。例如,如果用户在两小时内说“#34;”,我想在两小时后存储时间。

到目前为止,我发现我可以使用AMAZON.DURATION slot type将这样的字词转换为持续时间,但我还没弄明白如何将其添加到当前日期。

持续时间如下:PT2H。 P表示持续时间,T表示时间单位,2H表示2小时。我可以自己解析这个问题,但是我希望有一些内置功能可以做到这一点吗?

2 个答案:

答案 0 :(得分:5)

所以我使用moment.js library解决了这个问题。我已经使用它来格式化和处理日期,我发现它们也支持durations

我解决这个问题的方法是获取当前日期,解析持续时间并将它们加在一起:

var now = moment();
var duration = moment.duration(myDurationString);
var futureDate = now.add(duration);

然后,我可以格式化futureDate以回读给用户并将其保存在数据库中。

答案 1 :(得分:0)

这是不使用任何库的另一种方法。

function getDuration(amazon_duration) {
    let timelist = amazon_duration.match(/([S]?\d+)/gim);
    let duration = 0;
    if (timelist.length === 1) {
        duration = parseInt(timelist[0]) * 1;
    } else if (timelist.length === 2) {
        duration = (parseInt(timelist[0]) * 60) + (parseInt(timelist[1]) * 1);
    } else if (timelist.length === 3) {
        duration = (parseInt(timelist[0]) * 60 * 60) + (parseInt(timelist[1]) * 60) + (parseInt(timelist[2]) * 1);
    }

    return duration;
}

console.log(getDuration("PT1H10M25S"));