【发布时间】:2018-11-23 02:06:40
【问题描述】:
谁能解释一下这些函数是什么意思?
setDate = agent.parameters.date.split('T')[0];
setTime = agent.parameters.time.split('T')[1].split(':')[0];
我正在进行预订预订,我希望 Google 助理以 12 小时格式打印出用户输入的时间。现在,当我在下午 4 点输入时,它会在 16 点打印出来。我的日期可以正常工作,但时间不行。我尝试过其他方法,但我不太明白“拆分”是什么意思。
例如。如果我说“book table today 4.30pm”,那么 google 会回复为 “您已于 2018 年 11 月 23 日下午 4:30 预订." 但是现在有了代码,它会打印出 " 2018-11-23 at 16"
这是我的代码:
function makeBooking(agent){
bookingDate= agent.parameters.date.split('T')[0];
bookingTime = agent.parameters.time.split('T')[1].split(':')[0];
agent.add(`You have booked on ${availDate} at ${availTime}.`);
}
// A helper function that receives Dialogflow's 'date' and 'time' parameters and creates a Date instance.
function convertParametersDate(date, time){
var resultDate = new Date(Date.parse(date.split('T')[0]));
return resultDate;
}
【问题讨论】:
-
如果你提供
date和time的格式会更容易解释。.split()所做的是使用参数将字符串划分为数组元素以确定拆分位置。所以像"XXXX-XX-XXTYY:YY:YY:YY"这样的字符串与.split('T')分开会产生["XXXX-XX-XX", "YY:YY:YY:YY"]的数组。 -
@RandyCasburn 嗨,我已经编辑了上面的代码,格式如上所示。
-
Date.parse在new Date(Date.parse(date.split('T')[0]))中是多余的,可以使用new Date(date.split('T')[0])。反正应该是new Date(date + 'T' + time)。 -
@RandyCasburn 谢谢,但它仍以 24 小时格式打印。
-
在您提供
agent.parameters.date返回的值的格式之前,无法回答您的问题。该代码推断出 ISO 8601 扩展格式,但结果表明并非如此。
标签: javascript dialogflow-es actions-on-google