【发布时间】:2016-07-05 12:51:27
【问题描述】:
我居住在加拿大,我们的日期格式为 dd/mm/yyyy。当我打电话给toLocaleDateString()时,我看到了一些不寻常的东西
HTML:
<input type="date" value="2016-01-13">
<p id="container">
</p>
JS:
var d = new Date("2016-01-13");
document.getElementById('container').innerText = d.toLocaleDateString();
日期输入的值是我所期望的 - 2016-01-13。
段落的值是美国格式-12-01-2016(日期的变化是由于从GMT本地化到EST)
Chrome 语言设置为加拿大,我的系统设置 (Windows 7) 也是如此。日期输入似乎尊重这一点,但我认为toLocaleDateString() 会选择加拿大作为我的语言环境并适当地格式化日期。
MSDN 是这样描述这个函数的:
dateObj.toLocaleDateString([locales][, options])
语言环境(可选)。包含一个或多个语言或区域设置标记的区域设置字符串数组。如果您包含多个区域设置字符串,请按优先级降序列出它们,以便第一个条目是首选区域设置。如果省略此参数,则使用 JavaScript 运行时的默认语言环境。
用户可以更改 JavaScript 运行时默认语言环境吗?我猜不是因为我没有成功。
日期输入和toLocaleDateString 之间的不同格式让我很困惑,有什么想法可以将两者对齐吗?
【问题讨论】:
-
你不应该期待任何事情,因为toLocaleString完全依赖于实现。此外,OP 的便捷格式不应基于它们所在的位置,而是基于它们想要查看的内容(即偏好不一定取决于语言环境,因此 toLocaleString 有点用词不当)。去英国旅行的美国人会希望他们的所有设备都开始以 d/m/y 格式报告日期吗?还是他们宁愿设置一个偏好以始终查看 m/d/y?
标签: javascript date