Javascript 使用时区时JS Date返回错误的日期
我在GMT+1和夏季时间(GMT+2),使用MS Edge,语言设置为英语(美国)。从同一日期创建不同年份的新日期会返回不同的区域设置日期字符串Javascript 使用时区时JS Date返回错误的日期,javascript,datetime,Javascript,Datetime,我在GMT+1和夏季时间(GMT+2),使用MS Edge,语言设置为英语(美国)。从同一日期创建不同年份的新日期会返回不同的区域设置日期字符串 新日期(“1979-09-10T22:00:00.000Z”)。toLocaleDateString() // "9/10/1979" 新日期(“1980-09-10T22:00:00.000Z”)。toLocaleDateString() //“1980年9月11日”->对我来说是正确的一天 我猜这些年来,所使用的语言环境在时区方面进行了改革。如何
新日期(“1979-09-10T22:00:00.000Z”)。toLocaleDateString()
// "9/10/1979"
新日期(“1980-09-10T22:00:00.000Z”)。toLocaleDateString()
//“1980年9月11日”->对我来说是正确的一天
我猜这些年来,所使用的语言环境在时区方面进行了改革。如何检查原因?使用获取当前具有偏移量+1和某种DST的规范IANA代表位置,这些位置没有返回“1979-09-10T22:00:00.000Z”和“1980-09-10T22:00:00.000Z”的预期字符串,返回了以下列表:
也有像爱尔兰这样的地方在夏天遵守标准时间(+1),在冬天将时钟向后拨1小时(+0),这就是为什么欧洲/都柏林在冬天的DST似乎为-1小时。:-) 你可能会发现,在一年中,标准时间是当地9月10日的1:00和23:00,而在另一年,标准时间是当地9月11日的00:00。系统设置为哪个IANA位置?请注意,许多地方已不时更改其观测DST的日期,以及是否观测DST。ECMAScript日期对象是观察历史更改所必需的。PS您可以在以下位置检查历史时区更改。e、 答得好。时区在讨论的日期没有DST。有没有办法确定JS使用的时区(按名称,例如Europe/Vaduz)?@Johannes不可靠。使用timeZoneName进行toLocaleString:“long”选项可能会生成civil名称,但这些名称不是标准化的,并且在同一地点的不同实现中可能会得到不同的结果。还要注意的是,民用时区由行政边界定义,而IANA代表性位置(如欧洲/瓦杜兹)实际上意味着“该特定位置的历史时区偏移和DST变化”,可能适用于其他位置,但没有定义地理边界(尽管我相信谷歌正试图从经验上做到这一点)。