Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Alexa日历:Amazon Lambda本地与UTC时区不匹配_Node.js_Amazon Web Services_Aws Lambda_Alexa - Fatal编程技术网

Node.js Alexa日历:Amazon Lambda本地与UTC时区不匹配

Node.js Alexa日历:Amazon Lambda本地与UTC时区不匹配,node.js,amazon-web-services,aws-lambda,alexa,Node.js,Amazon Web Services,Aws Lambda,Alexa,我完成了从ics日历构建一个日历的练习。这一切都很好,除了在美国东部夏令时晚上7点或更晚的时候有活动开始,技能会在第二天读出 这似乎是一个时区问题。我正在Amazon Lambda上托管逻辑,我相信它设置为UTC。将我的谷歌日历设置为UTC没有帮助。将process.env.TZ='America/New_York'添加到我的JavaScript node.js代码中也没有帮助 有人告诉我,出于隐私原因,我无法发现Alexa用户的时区。但我不需要发现技能用户的时区,因为可以安全地假设他们与我的本

我完成了从ics日历构建一个日历的练习。这一切都很好,除了在美国东部夏令时晚上7点或更晚的时候有活动开始,技能会在第二天读出

这似乎是一个时区问题。我正在Amazon Lambda上托管逻辑,我相信它设置为UTC。将我的谷歌日历设置为UTC没有帮助。将process.env.TZ='America/New_York'添加到我的JavaScript node.js代码中也没有帮助


有人告诉我,出于隐私原因,我无法发现Alexa用户的时区。但我不需要发现技能用户的时区,因为可以安全地假设他们与我的本地活动日历“东部日光”位于同一时区。我需要做的就是让lambda知道当地时间晚上7点到午夜之间的事件不会在第二天发生。你知道我能做什么吗?谢谢。

UTC是过去、未来以及现在唯一明确且确定的时区

它是唯一一个时区,例如,无论地方政府或国家政府采取何种行动,01:59:59之后的一秒在任何日期都不会是03:00:00。另一方面,美国/东方每年春季都会经历一次。相反,在秋天,一天中有两次,墙上的时钟时间02:59:59在一天中出现两次,间隔一小时。但在UTC中,这两个时间由两个相隔3600秒的不同值正确表示,其中一个值在另一个值后一小时出现

在设计处理日期时间的应用程序时,正确的解决方案是将日期时间存储为UTC,然后使用时区库对其进行转换,这一点几乎没有争论的余地。转换为UTC是确保无损转换的唯一方法

并且不会将事件存储在本地时区中,而是将所有事件转换并存储为UTC,然后再次转换并根据日历的时区首选项显示它们

如果安全地假设用户希望听到基于美国/纽约的事件,则使用时区库转换系统的日期/时间。任何服务器都应始终将其本地时区设置为UTC,在进行比较之前,Lambda和事件日期/时间从UTC到目标时区就是这种情况


据推测,谷歌日历API也可以查询您的时区偏好,您可以使用该值进行转换。或者您可以询问用户。

UTC是过去、将来以及现在唯一明确且确定的时区

它是唯一一个时区,例如,无论地方政府或国家政府采取何种行动,01:59:59之后的一秒在任何日期都不会是03:00:00。另一方面,美国/东方每年春季都会经历一次。相反,在秋天,一天中有两次,墙上的时钟时间02:59:59在一天中出现两次,间隔一小时。但在UTC中,这两个时间由两个相隔3600秒的不同值正确表示,其中一个值在另一个值后一小时出现

在设计处理日期时间的应用程序时,正确的解决方案是将日期时间存储为UTC,然后使用时区库对其进行转换,这一点几乎没有争论的余地。转换为UTC是确保无损转换的唯一方法

并且不会将事件存储在本地时区中,而是将所有事件转换并存储为UTC,然后再次转换并根据日历的时区首选项显示它们

如果安全地假设用户希望听到基于美国/纽约的事件,则使用时区库转换系统的日期/时间。任何服务器都应始终将其本地时区设置为UTC,在进行比较之前,Lambda和事件日期/时间从UTC到目标时区就是这种情况


据推测,谷歌日历API也可以查询您的时区偏好,您可以使用该值进行转换。或者您可以询问用户。

这里有很多关于时间处理的讨论:这里有很多关于时间处理的讨论: