Javascript 通过iso“0001-01-01T01:00:00”添加16秒创建日期

Javascript 通过iso“0001-01-01T01:00:00”添加16秒创建日期,javascript,datetime,timezone-offset,Javascript,Datetime,Timezone Offset,新日期0001-01-01T01:00:00Z->周一一月一日0001 02:50:16 GMT+0150莫斯科标准时间 不正确的GMT:my timezone GMT+3000,但date为日期创建了GMT+0150,我认为您可以也应该像您一样,以UTC ISO 8601 Z格式YYYY-MM-DDTHH:MM:SSZ定义日期 然而,要获得这些日期的用户友好的字符串表示,这将取决于您的客户机和使用的Javascript引擎。如果使用toLocaleString显式指定参考时区,则可以约束输出

新日期0001-01-01T01:00:00Z->周一一月一日0001 02:50:16 GMT+0150莫斯科标准时间
不正确的GMT:my timezone GMT+3000,但date为日期创建了GMT+0150,我认为您可以也应该像您一样,以UTC ISO 8601 Z格式YYYY-MM-DDTHH:MM:SSZ定义日期

然而,要获得这些日期的用户友好的字符串表示,这将取决于您的客户机和使用的Javascript引擎。如果使用toLocaleString显式指定参考时区,则可以约束输出

var日期=新日期1990-01-01T01:00:00Z; console.logdate.toLocaleStringen-US,{时区:亚洲/耶路撒冷}; console.logdate.toLocaleStringen-US,{时区:欧洲/莫斯科}; console.logdate.toLocaleStringen-US,{时区:非洲/吉布提}; //我的机器上的输出应与您的相同: //1990年1月1日,凌晨3:00:00 //1990年1月1日,凌晨4:00:00 //1990年1月1日,凌晨4:00:00 console.logdate.toString; //在我的机器上**的输出**,在你的机器上**不应该**相同
//1990年1月1日星期一02:00:00 GMT+0100中欧标准时间在我看来,对于日期,您可以并且应该按照UTC ISO 8601 Z格式YYYY-MM-DDTHH:MM:SSZ定义它们,就像您所做的那样

然而,要获得这些日期的用户友好的字符串表示,这将取决于您的客户机和使用的Javascript引擎。如果使用toLocaleString显式指定参考时区,则可以约束输出

var日期=新日期1990-01-01T01:00:00Z; console.logdate.toLocaleStringen-US,{时区:亚洲/耶路撒冷}; console.logdate.toLocaleStringen-US,{时区:欧洲/莫斯科}; console.logdate.toLocaleStringen-US,{时区:非洲/吉布提}; //我的机器上的输出应与您的相同: //1990年1月1日,凌晨3:00:00 //1990年1月1日,凌晨4:00:00 //1990年1月1日,凌晨4:00:00 console.logdate.toString; //在我的机器上**的输出**,在你的机器上**不应该**相同
//1990年1月1日星期一02:00:00 GMT+0100中欧标准时间时区是偏移量加上日期范围。为了格式化日期,javascript想知道莫斯科在零年的时区偏移量是多少。这是很难获得的信息,可能不准确!你以为你在问一些简单的问题,但实际上这是非常极端的。如果要使用date对象表示持续时间,应以历元为起点。

时区是偏移量加上日期范围。为了格式化日期,javascript想知道莫斯科在零年的时区偏移量是多少。这是很难获得的信息,可能不准确!你以为你在问一些简单的问题,但实际上这是非常极端的。如果您想使用date对象来表示持续时间,您应该以历元为起点。

是正确的,您应该接受这个答案,因为它首先出现,而不是这个答案。但仅提供一个详细的解释:

时区历史记录之前的日期标记为LMT-代表。偏移量来自城市的纬度和经度,而不是任何当前的政治决定

由于显示的偏移比UTC早1:50:16,我可以推断您的系统时区是欧洲/明斯克。可以看出:

这只是欧洲/明斯克区域条目的第一行,该条目表示在1880年之前,使用UTC+1:50:16的LMT条目

至于它为什么说莫斯科标准时间-该字符串来自数据,我们可以在文件中看到:

因此,欧洲/明斯克在1991年之前一直使用莫斯科元区。然后,使用其中一个语言文件(如for English),我们可以看到分配给此元区域的实际文本:

莫斯科时间 莫斯科标准时间 莫斯科夏季时间 现在,您已经完全了解了字符串Mon Jan 01 0001 02:50:16 GMT+0150 Moscow Standard Time是如何从0001-01-01T01:00:00Z推导而来的。

是正确的,您应该接受这个答案,因为它是第一个答案,而不是这个答案。但仅提供一个详细的解释:

时区历史记录之前的日期标记为LMT-代表。偏移量来自城市的纬度和经度,而不是任何当前的政治决定

由于显示的偏移比UTC早1:50:16,我可以推断您的系统时区是欧洲/明斯克。可以看出:

这只是欧洲/明斯克区域条目的第一行,该条目表示在1880年之前,使用UTC+1:50:16的LMT条目

至于它为什么说莫斯科标准时间-该字符串来自数据,我们可以在文件中看到:

因此,欧洲/明斯克在1991年之前一直使用莫斯科元区。然后,使用其中一个语言文件(如for English),我们可以看到分配给此元区域的实际文本:

莫斯科时间 莫斯科标准时间 莫斯科总和 时间
现在,您已经完全了解了字符串Mon Jan 01 0001 02:50:16 GMT+0150 Moscow Standard Time是如何从0001-01-01T01:00:00Z派生而来的。

GMT+0150是toString方法的显示问题,或者您只需在浏览器中执行console.log。javascript的内部datetime重新租用与此相同。GMT+0150的可能重复不是显示问题,因为getTimezoneOffset返回的值不正确。由于您没有提供明确的时区,因此时区偏移量由您的区域设置推断。注意:众所周知,javascript中的日期很难处理,特别是在这些时区/偏移问题上。我真的怀疑地球上有哪个国家在公元1年就已经有了时区,所以我想知道这个练习的意义是什么…?我敢打赌,如果您以new Date2001-…GMT+0150之类的内容开始此操作,您会得到不同的结果。toString方法或在浏览器中执行console.log时,GMT+0150是一个显示问题。javascript的内部datetime重新租用与此相同。GMT+0150的可能重复不是显示问题,因为getTimezoneOffset返回的值不正确。由于您没有提供明确的时区,因此时区偏移量由您的区域设置推断。注意:众所周知,javascript中的日期很难处理,特别是在这些时区/偏移问题上。我真的怀疑地球上有哪个国家在公元1年就已经有了时区,所以我想知道这个练习的意义是什么…?我敢打赌,如果你从new Date2001开始,你会得到不同的结果-…从Johan Karlsson对你的问题发表评论的链接中添加了更多信息。从Johan Karlsson对你的问题发表评论的链接中添加了更多信息。对。但即使在新纪元,你们也可能会感到惊讶,因为自那个时起,一些国家已经改变了补偿或夏令时规则。例如,以OP的问题为例,俄罗斯自2010年起停止使用DST。夏季的日期在2010年之前或之后不会有相同的UTC偏移量。对。但即使在新纪元,你们也可能会感到惊讶,因为自那个时起,一些国家已经改变了补偿或夏令时规则。例如,以OP的问题为例,俄罗斯自2010年起停止使用DST。夏季的日期在2010年之前或之后不会有相同的UTC偏移量。
# Zone  NAME          GMTOFF   RULES  FORMAT  [UNTIL]
Zone    Europe/Minsk  1:50:16  -      LMT     1880