【问题标题】:How to format my date with MomentJS如何使用 MomentJS 格式化我的日期
【发布时间】:2015-10-07 11:24:34
【问题描述】:

我正在使用 moment.js 在应用中输出日期。

日期格式基于区域设置(clientLanguage 变量)。

我试过这个(和许多其他的东西):

moment(myISODate).locale(clientLanguage).format('ll');

但我需要的格式不同,我无法找到以下格式的日期:

WED 18 NOV 20:05WED 18 NOV

有什么办法可以用moment吗?

[更新] 我错过了一个非常重要的事情:应该尊重语言环境格式,所以如果格式日期的英文方式是 WED OCT 19,意大利语应该是 MER 19 OTT(19 在另一个位置)

[更新] 投反对票的人显然没有解决办法

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    试试这个

    moment(myISODate).locale(clientLanguage).format('ddd') + " " + moment(myISODate).locale(clientLanguage).format('DD MMM HH:mm')  
    

    【讨论】:

    • 问题是:我不明白以这种方式设置格式(“dd...”)是否会阻止语言环境以正确的方式显示日期。示例:WED OCT 19 对英语来说是可以的,但对于意大利语应该是 MER 19 OTT,其中数字在另一个地方
    • 现在我知道了:它“冻结”了日期并且停止了本地化方式
    【解决方案2】:

    试试这个,

    11 月 18 日星期三 20:05 - moment(myISODate).locale(clientLanguage).format('ddd D MMM hh:mm');

    11 月 18 日星期三 - moment(myISODate).locale(clientLanguage).format('ddd D MMM');

    【讨论】:

    • 问题是:我不明白以这种方式设置格式(“dd...”)是否会阻止语言环境以正确的方式显示日期。示例:WED OCT 19 对英语来说是可以的,但对于意大利语应该是 MER 19 OTT,其中数字在另一个地方
    • 现在我知道了:它“冻结”了日期并且不关心语言环境。对我不好
    • 看看这个:moment.locale("it"); moment().format('ddd D MMM hh:mm')
    • 这不行,因为 "en" 不行... format 方法将日期冻结为您设置的标准,它不知道多语言环境支持
    【解决方案3】:

    您可以执行以下操作:

    var locale = window.navigator.userLanguage || window.navigator.language;
    moment.locale(locale);
    console.log(locale); //en-US
    var now = moment().format("ddd D MMM H:mm");
    console.log(now); //Wed 7 Oct 15:06
    
    moment.locale('it');
    console.log('it'); //it
    var now = moment().format("ddd D MMM H:mm");
    console.log(now); //Mer 7 ott 15:06
    

    Jsfiddle

    有关以不同格式显示的更多信息,您可以查看他们的documentation

    更新:更新了我的答案和 jsfiddle。

    您可以通过以下方式检查用户的浏览器区域设置:

    var locale = window.navigator.userLanguage || window.navigator.language;
    

    然后像这样设置 moment.js 以使用该语言环境:

    moment.locale(locale);
    

    问题是您必须包含所有时刻 js locales 文件。 (moment-with-locales.min.js)

    更新 2: 是的,似乎没有办法自定义它,但是自己做很简单。只需使用 locales(not the minified one) 搜索 moment.js 的源代码,例如 'LLLL',您将看到如下内容:LLLL : 'dddd D MMMM YYYY HH:mm' 将其更改为您想要的每种语言输出("ddd D MMM H:mm"),你应该被设置。

    【讨论】:

    • 我需要语言环境,正如我所说的
    • @3000 你应该使用 moment.locale() 。
    • 好的,但如果我发帖是因为它不能按我需要的方式工作:-)(或者我不能按这种方式工作)
    • 这不行,因为对于我们来说,你应该在 10 月 7 日星期三,而不是 7 月 7 日星期三
    • 这是我想做的“最终解决方案”,我认为有办法避免这种情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多