Javascript日期表现奇怪

时间:2018-09-24 15:44:10

标签: javascript

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

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

2 个答案:

答案 0 :(得分:0)

您正在创建日期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())

答案 1 :(得分:0)

您使用的格式是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());