我正在构建一个用Typescript编写的应用程序,它使用Moment.js和moment-timezone的功能。我需要应用程序中的日期和时间戳本地化,因此在主app.ts
文件中,我使用设备的语言设置moment的区域设置。
更新:以下是示例文件的要点,并附有注解https://gist.github.com/spstratis/fa853f9750a095d4acd0d1196a285be9
app.ts
import * as moment from 'moment/min/moment-with-locales';
let language = appUtil.getPhoneLanguage();
moment.locale(language);
// the expected locale is printed
console.log("Moment Locale = " + moment.locale());
字符串
问题是,在这个实用程序模块中,当我导入moment-timezone时,它默认为'en' locale,即使我在主app.ts
文件中全局设置了moment的locale。
下面是我的两个实用程序方法,如果moment-timezone默认为'en',我如何本地化相对日期字符串和月份?
我尝试在moment方法中添加.locale(locale),但这并没有改变任何东西。如果我导入moment而不是moment-timezone,这对某些方法有效,但在需要使用timezone实用程序的任何方法上都失败了。
date-util.ts
import * as moment from 'moment-timezone';
export function dateRelativeTime(value): string {
let timezoneId = appCache.getTimezoneId();
let localTime = _getLocalUtcDateString(value, timezoneId);
let dateMoment = moment(localTime, "MM/DD/YYYY hh:mm:ss A");
let formatedDate = dateMoment.tz(timezoneId).fromNow();
return formatedDate;
};
export function localizedMonths(): ValueList {
let m = moment("2016");
let months = new ValueList([]);
for (var i = 0; i < 12; i++) {
months.push({ ValueMember: [i + 1], DisplayMember: m.month(i).format('MMMM') });
}
return months;
};
型
6条答案
按热度按时间ffvjumwh1#
我在Typescript中遇到了同样的问题。我想使用moment-timezone将时区设置为欧洲/布鲁塞尔,并将locale设置为比利时荷兰语,我这样解决了它:
字符串
现在使用momentTZ如果你想在你的项目中使用moment,就像这样。
型
oogrdqng2#
我们也遇到了这个问题。这是一个相当丑陋的解决方案,因为
moment
和moment-timezone
都将在项目中,但moment-timezone
包依赖于moment
包,所以我猜它们都将存在。我们的想法是将本地化应用于矩,然后将其用于
moment-timezone
字符串
fgw7neuy3#
你输入的时机不对。不要这样做:
字符串
就这么做:
型
它将在您使用它们时加载各个区域设置(在Node.js上),然后您将共享moment-timezone使用的相同时刻依赖,因此您的全局区域设置将继续。
0h4hbjxa4#
你试过
.format('')
吗?字符串
更新:还要确保你的moment库是带有locale的:https://momentjs.com/指定了两个moment库,带(moment-with-locales.js)和不带locale(* moment.js *)。
vwoqyblh5#
对于多语言环境,使用Moment.js定制:
个字符
在这之后,你应该总是导入
moment-timezone
,一切都会好起来的:型
z9zf31ra6#
我不知道为什么,但我突然有了同样的问题。
在使用moment和moment-timezone时,似乎需要一些额外的配置。
这里是当你只使用一个区域设置时的最低设置。
字符串
我相信你可以按照下面的例子配置多个区域设置。
参考:https://github.com/moment/moment-timezone/issues/647#issuecomment-439600573