我正在構建使用Moment.js和moment-timezone中的功能創建的應用程序。我需要本地化的應用程序中的日期和時間戳,所以在我使用設備的語言設置時刻的語言環境的主文件app.ts
中。Moment-Timezone在全局Moment語言環境設置後使用默認語言環境
UPDATE:這裏是樣本文件的要點與補充意見 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-時區,即使我已經在主文件app.ts
中設置了全局時間的區域設置,它仍然默認爲'en'區域設置。
以下是我的兩個實用方法,如果moment-timezone默認爲'en',我怎麼能夠本地化相對日期字符串和月份?
我試圖添加.locale(語言環境)的時刻方法,但沒有改變任何東西。如果我導入時刻而不是瞬時時區,這對於某些方法起作用,但對任何需要使用時區實用程序的方法均失敗。
日期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;
};
你可以用TS和兩個時刻庫設置一個要點嗎? – BogdanBiv
@BogdanBiv它使用我所有的代碼? –
作爲一個方面說明:你可以使用'localeData = moment.localeData(); localeData.months();'獲取本地化的月份名稱數組,請參閱文檔中的[訪問語言環境特定功能](http://momentjs.com/docs/#/i18n/locale-data/)。 – VincenzoC