无法让 date.toLocaleString() 将时间更改为语言环境
Can't get date.toLocaleString() to change time to locale
我正在尝试输出 JavaScript 中的日期。该页面将被多个时区和语言的人们使用,我认为最好使用 toLocaleString()
.
我试过 MSDN 中的示例,但它不起作用:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
document.write(date.toLocaleString('en-US', { hour12: false }));
// → "12/19/2012, 19:00:00"
但我得到
12/20/2012, 03:00:00
我在 Linux 和 Windows 中尝试了一些浏览器,但我得到的结果是一样的。有什么明显的我遗漏的东西吗?
Date.UTC
的第四个参数是小时(0 到 23),所以如果您位于 "zero" 时区,那么在您的情况下它是 03:00:00。 MSDN 示例可能是由坐在例如西雅图。
toLocaleString
方法是关于格式化的,它将日期格式化为美式英语格式,它不关心时区,也不可能。
如果你想处理时区,我绝对推荐使用一个库,比如 MomentJS,不幸的是在 JavaScript 中处理时间是一件痛苦的事情(并且公平地说,在大多数语言中)。但是,如果你想 fiddle 与原生 JS,然后看看 getTimezoneOffset
方法。
我正在尝试输出 JavaScript 中的日期。该页面将被多个时区和语言的人们使用,我认为最好使用 toLocaleString()
.
我试过 MSDN 中的示例,但它不起作用:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
document.write(date.toLocaleString('en-US', { hour12: false }));
// → "12/19/2012, 19:00:00"
但我得到
12/20/2012, 03:00:00
我在 Linux 和 Windows 中尝试了一些浏览器,但我得到的结果是一样的。有什么明显的我遗漏的东西吗?
Date.UTC
的第四个参数是小时(0 到 23),所以如果您位于 "zero" 时区,那么在您的情况下它是 03:00:00。 MSDN 示例可能是由坐在例如西雅图。
toLocaleString
方法是关于格式化的,它将日期格式化为美式英语格式,它不关心时区,也不可能。
如果你想处理时区,我绝对推荐使用一个库,比如 MomentJS,不幸的是在 JavaScript 中处理时间是一件痛苦的事情(并且公平地说,在大多数语言中)。但是,如果你想 fiddle 与原生 JS,然后看看 getTimezoneOffset
方法。