toLocaleDateString和toLocaleString方法不尊重机器时区

toLocaleDateString and toLocaleString methods does not respect the machines timezone

本文关键字:机器 时区 toLocaleString 方法 toLocaleDateString      更新时间:2023-09-26

我的电脑有美国地区设置、日期格式和-8h GMT时区,但我并不完全在美国地区。为什么当通过新日期获取日期时,我可以看到时区偏移是正确的,但当我尝试将其转换为localedateString时,我会得到真正的本地日期字符串?

var date = new Date();
///here date is (for example)  Mon Jan 15 2001 12:00:00 GMT-0800 (Pacific Standard Time)
var localeString = date.toLocateDateString();
///or date.toLocaleString()
/// localeString here comes in my real locale date format 15.01.2001 г or 15.01.2001 г., 12:00:00 when using toLocaleString()

toLocaleString的输出完全依赖于实现,并且在当前使用的浏览器之间不一致。它不一定尊重系统设置(例如,Chrome不尊重我对组件顺序的系统设置),ECMA-262中也没有要求它这样做。

为了获得可靠的结果,请以明确的格式手动格式化输出,例如25 Feb 2017。库可以提供帮助,但如果您只需要一种格式,那么一个简单的函数就足够了。