javascript - Javascript:Firefox 忽略 Date.toLocaleString 和 Intl.DateTimeFormat 中的 dateStyle 和 timeStyle 选项
问题描述
console.log(Intl.DateTimeFormat(undefined, {timeStyle: "long", dateStyle: "long"}).format());
Chrome 说:“美国东部标准时间 2020 年 2 月 13 日晚上 7:33:18”。
火狐说:“2020 年 2 月 13 日”
Firefox 在使用toLocaleString
.
var date = new Date();
console.log(date.toLocaleString(undefined, {timeStyle: "short", dateStyle: "short"}));
console.log(date.toLocaleString(undefined, {timeStyle: "medium", dateStyle: "medium"}));
console.log(date.toLocaleString(undefined, {timeStyle: "long", dateStyle: "long"}));
所有这些行在 Firefox 中给出相同的结果:“2/13/2020, 8:04:11 PM”。Chrome 正确地给出了不同的值。
这是怎么回事?如何在 Firefox 中获取区域设置正确的日期字符串?
编辑:显然 Firefox 不支持这些属性。
解决方案
和选项仍处于提案状态dateStyle
(第 3 阶段)。timeStyle
浏览器还没有被迫实现它,并且很可能希望在实现它之前等待规范稳定。
目前,您仍然可以使用默认选项来获得不太自然但仍然本地化的结果:
const supports = testDateTimeStyleSupport();
const opts = supports ? { dateStyle: "long", timeStyle: "long" } : {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: "numeric",
minute: "numeric",
second: "numeric"
}
console.log( new Intl.DateTimeFormat( undefined, opts ).format() );
// assumes both are supported or none
function testDateTimeStyleSupport() {
let support = false;
const tester = {
get dateStyle() { support = true; }
};
new Intl.DateTimeFormat( undefined, tester );
return support;
}
推荐阅读
- windows - 我在 Windows 终端 settings.json 中错过了什么?
- python - RISC-V Toolchain Makefile 的分隔符和代码错误问题。我怎样才能做到正确?
- c# - Process.Start 不起作用,或者什么也不做
- c# - Unity c#在后台设置计时器,即使游戏不活跃
- css - 背景图像未在烧瓶网站上注册
- python - 使用新网格插入 4D 数据的最佳方法
- reactjs - 如何在 reactjs 中使用 Grubhub 提供的 Grubhub 链接?
- java - JEditorPane 内容类型“text/html”换行符,不创建段落
- android - 如何分隔字符串?
- python - tkinter 按钮在使用它调用其他脚本后保持单击状态