Javascript日期表现奇怪[重复]

Posted

技术标签:

【中文标题】Javascript日期表现奇怪[重复]【英文标题】:Javascript date acting strange [duplicate] 【发布时间】:2019-02-28 04:15:25 【问题描述】:

为什么这给我的是 9 月 30 日而不是 10 月 1 日?

var dob = new Date("1999-10-01")
console.log(dob.toString())

【问题讨论】:

因为您没有指定时区。 它正在取消您的本地系统时间。对我来说,这是 BST,所以显示为 GMT+1 您使用的是非标准日期格式,所以您很幸运它为您提供了一个日期实例。它可能将您的日期字符串解释为 UTC 日期/时间,而您比 UTC 晚了几个小时。 它给了我 Fri Oct 01 1999 02:00:00 GMT+0200 :也许它处理本地时区? @Pointy 格式为标准ISO86001 【参考方案1】:

您正在创建一个日期 new Date("1999-10-01") 并使用使用本地时区的方法 toString() 对其进行解析:

var dob = new Date("1999-10-01")

console.log(dob)
console.log(dob.toISOString())

console.log('My local time is different!')
console.log(dob.toLocaleString('es-AR',  timeZone: 'America/Buenos_Aires', timeZoneName: 'long'))

console.log('Your local time is different?')
console.log(dob.toString())

【讨论】:

【参考方案2】:

您使用的格式是ISO 8601的子集 当没有指定时区指示符时,日期构造函数中隐含了偏移 Zulu (UTC)。

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

所有数字必须以 10 为底。如果 MM 或 DD 字段不存在,“01”是 用作值。如果 HH、mm 或 ss 字段不存在,则使用“00” 因为缺席的sss字段的值和值是“000”。价值 缺少的时区偏移量是“Z”。

换句话说,您使用的格式是有效的,它表示 UTC 的日期时间。您在控制台中看到的是您所在时区的时间。

const date = new Date("1999-10-01");

console.log(date.toLocaleDateString('ar-EG'));
console.log(date.toString());
console.log(date.toISOString());

【讨论】:

以上是关于Javascript日期表现奇怪[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SF符号在约束下表现得很奇怪[重复]

通过 JavaScript 显示日期 [重复]

当我们传递一个带有一个参数的函数时,JavaScript 的 reduce 方法表现得很奇怪

Python数据结构内存占用表现奇怪

Java GUI为啥BoxLayout面板在其中有另一个BoxLayout面板时表现得很奇怪

奇怪的匿名javascript函数调用[重复]