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日期表现奇怪[重复]的主要内容,如果未能解决你的问题,请参考以下文章
当我们传递一个带有一个参数的函数时,JavaScript 的 reduce 方法表现得很奇怪