将 AMAZON.DURATION 添加到当前时间
Add AMAZON.DURATION to current time
我正在编写一项 Alexa 技能,我想将未来时间的记录存储在数据库中。例如,如果用户说 "in two hours",我想存储从现在开始两个小时后的时间。
到目前为止,我发现我可以使用 AMAZON.DURATION slot type 将这样的词转换为持续时间,但我还没有想出如何将其添加到当前日期。
时长是这样回来的:PT2H。 P表示持续时间,T表示时间单位,2H表示2小时。我可以自己解析这个,但我希望有一些内置函数可以做到这一点?
所以我使用moment.js library. I was already using this to format and work with dates, and I discovered they also support durations解决了这个问题。
我解决这个问题的方法是获取当前日期,解析持续时间,然后将它们相加:
var now = moment();
var duration = moment.duration(myDurationString);
var futureDate = now.add(duration);
然后,我可以格式化 futureDate
以回读给用户并将其保存在数据库中。
这是不使用任何库的另一种方法。
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"));
我正在编写一项 Alexa 技能,我想将未来时间的记录存储在数据库中。例如,如果用户说 "in two hours",我想存储从现在开始两个小时后的时间。
到目前为止,我发现我可以使用 AMAZON.DURATION slot type 将这样的词转换为持续时间,但我还没有想出如何将其添加到当前日期。
时长是这样回来的:PT2H。 P表示持续时间,T表示时间单位,2H表示2小时。我可以自己解析这个,但我希望有一些内置函数可以做到这一点?
所以我使用moment.js library. I was already using this to format and work with dates, and I discovered they also support durations解决了这个问题。
我解决这个问题的方法是获取当前日期,解析持续时间,然后将它们相加:
var now = moment();
var duration = moment.duration(myDurationString);
var futureDate = now.add(duration);
然后,我可以格式化 futureDate
以回读给用户并将其保存在数据库中。
这是不使用任何库的另一种方法。
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"));