我有一些客户端代码使用react-intl以用户定义的语言和区域(文化/区域设置)显示货币、语言和日期时间值。除了这些要求之外,我还想在使用长日期和时间格式时显示时区缩写(例如2016 年 2 月 8 日,格林威治标准时间 15:02)。
为此,我尝试使用moment-timezone模块,它似乎在隔离中做正确的事情。但是,我发现在我使用react-intl的应用程序中,同一行代码会生成正确的数据,但日期时间格式错误。
document.write(moment(Date()).tz("Europe/London").format('LLL z'));
预计时间:格林威治标准时间 2016 年 2 月 8 日 20:57
实际时间:格林威治标准时间 2016 年 2 月 8 日晚上 9:04
我的猜测是,这与我没有直接加载en-US local的事实有关,因为使用以下类型的代码作为react-intl库的一部分自动为我加载了时刻。
addLocaleData(en);
var intlData = {
"locales": ["en-US", "en-GB"],
"formats": {
"date": {
"short": {
"day": "numeric",
"month": "long",
"year": "numeric"
},
"longdatetime": {
"day": "numeric",
"month": "long",
"year": "numeric",
"hour": "numeric",
"minute": "numeric"
}
},
"time": {
"hhmm": {
"hour": "numeric",
"minute": "numeric"
}
}
}
};
const provider = <IntlProvider locale="en-GB" {...intlData}><MyApp /></IntlProvider>;
有关的: