繁体   English   中英

用JavaScript格式化toLocaleDateString日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM