服务模拟器和 Echo 中的 Alexa 技能日期是否相同?
Are Alexa skill dates the same in the Service Simulator and the Echo?
我的 Alexa node.js 技能涉及使用 "new Date()" 获取当前日期。在服务模拟器中,返回的日期是 UTC。但我需要 "America/New_York" 的时间 -- 我的技能是纽约本地的。所以我可以转换时区,没问题。但是我想知道当我部署技能时这是否会得到相同的结果。也就是说,实际服务上的 Date() 函数是否从 UTC 转换为本地时间?如果是这样,那么我将需要一些方法来确定我的代码是在服务模拟器中还是在实际服务中,并相应地转换为纽约时间。
谢谢。
来自documentation 日期
If no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings.
因此,根据系统设置,时区可能会有所不同。
为了克服这个问题,您可以在任何地方使用 UTC 日期,然后在需要的地方简单地转换时区。
// date with some timezone depending on system
let date = new Date();
// date in UTC
let utcDate = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
注意:utcDate 仍将采用系统时区,但它所持有的实际值将代表正确的 UTC 日期和时间。
我的 Alexa node.js 技能涉及使用 "new Date()" 获取当前日期。在服务模拟器中,返回的日期是 UTC。但我需要 "America/New_York" 的时间 -- 我的技能是纽约本地的。所以我可以转换时区,没问题。但是我想知道当我部署技能时这是否会得到相同的结果。也就是说,实际服务上的 Date() 函数是否从 UTC 转换为本地时间?如果是这样,那么我将需要一些方法来确定我的代码是在服务模拟器中还是在实际服务中,并相应地转换为纽约时间。
谢谢。
来自documentation 日期
If no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings.
因此,根据系统设置,时区可能会有所不同。 为了克服这个问题,您可以在任何地方使用 UTC 日期,然后在需要的地方简单地转换时区。
// date with some timezone depending on system
let date = new Date();
// date in UTC
let utcDate = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
注意:utcDate 仍将采用系统时区,但它所持有的实际值将代表正确的 UTC 日期和时间。