[英]Format toLocaleDateString date in Javascript
我想以dd MMM, yyyy
格式格式化本地化日期。
Ex.
In en => 30 Jan, 2019
In fr => 30 janv., 2019
In zh-CN => 30日 1月, 2019年
and so on.
我正在使用javascript的toLocaleDateString
()方法。 以下是我的代碼:
var dateObj = new Date(parseInt(timestamp));
var date = dateObj.toLocaleDateString(window.userLang, { day: 'numeric', month: 'short', year: 'numeric' });
好吧,它工作正常,但不是我想要的格式。
例如:對於英語,它的翻譯類似於2019年1月30日,基於https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
在Angular中,我們可以通過將所需的格式傳遞給datePipe.transform()來實現此目的,如下所示:
import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
@Pipe({
name: 'dateFormatPipe',
})
export class dateFormatPipe implements PipeTransform {
transform(value: string) {
let datePipe = new DatePipe((<any>window).userLang);
value = datePipe.transform(value, 'dd MMM, yyyy');
return value;
}
}
如我前面提到的,它將打印輸出:
In en => 30 Jan, 2019
In fr => 30 janv., 2019
In zh-CN => 30日 1月, 2019年
javascript / jquery中有沒有這樣的方法來實現這一目標?
如果要為每種語言強制使用特定格式,則toLocaleString可以幫助解決每個組件的語言部分,然后按所需順序放置組件,例如
function formatDate(date, langCode) { var day = date.toLocaleString(langCode, {day: '2-digit'}); // DD var month = date.toLocaleString(langCode, {month: 'short'}); // MMM var year = date.toLocaleString(langCode, {year: 'numeric'}); // YYYY return `${day} ${month}, ${year}`; } // Examples var d = new Date(); ['en', // English 'ja', // Japanese 'zh-CN', // Chinese, simplified 'fr', // French 'ar' // Arabic ].forEach(lang => console.log(formatDate(d, lang))); // Attempt to use prefered browser language console.log(formatDate(d, navigator.languages));
但是,這可能並不適合每種情況,您仍然需要確定使用哪種語言。 您可以嘗試navigator.languages ,它是實驗性的,但受到了很好的支持。 但是,我不信任它,因為我認為用戶很少將其設置為所需的值,而只是接受默認值。 但是,如果希望某人使用瀏覽器,只要日期格式明確(例如DD MMM,YYYY),他們就會以瀏覽器的默認語言理解日期。
有很多重復的語言用於確定語言,並且可能某些實現不支持某些語言。
PS。 日期格式化有許多不同的標記集,我將它們用於moment.js ,還有許多其他標記集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.