为什么给我9月30日而不是10月1日?
var dob = new Date("1999-10-01")
console.log(dob.toString())
答案 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());