1

我的网站是德语的,我使用角矩进行转换。一切正常,除了上午/下午。我的代码

<time>{{ messagedata.created*1000| amDateFormat: 'D, MMM YYYY, h:mm:ss A' }}</time>

结果:16, Febr. 2017, 5:30:00 AM 通缉结果:16, Febr. 2017, 5:30:00 Uhr

配置

app.run(function ($rootScope, $location, amMoment, moment) {
amMoment.changeLocale(LANGCODE);
moment.updateLocale('en', {
    relativeTime : {
        m:  "1 Minute",
        h:  "an Hour",
        d:  "1 Day",
        M:  "1 Month",
        y:  "1 Year",
    }
});
moment.updateLocale('de', {
    relativeTime : {
        m:  "1 Minute",
        d:  "1 Tag",
        M:  "1 Monat",
        y:  "1 Jahr",
    }
});

});

所以,我想用德语更改 AM/PM,可以吗?如何?

4

2 回答 2

2

德国时间不工作/去与上午/下午。德国时间采用 24 小时制。日期也以 a.而不是. 结尾,。最后正确的输出是:16. Febr. 2017, 17:30:00 Uhr. 这就是我们(德国人)期望的正确日期格式:)

<time>{{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss' }} Uhr</time>

H, HH       24 hour time
h, or hh    12 hour time (use in conjunction with a or A)

官方使用 24 小时制时间表示法,并用于需要精确度的目的,例如媒体公告。在口语中,使用 12 小时制。

注意口语!= 技术正确输出。


如果您仍然想使用A占位符,您可以创建自己的meridiem替代品,例如:

// From 2.8.1 to 2.11.2
moment.locale('de', {
    meridiem : function () {
        return 'Uhr';
    }
});

这样,以下格式应该适合您:

<time>{{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss A' }}</time>

可以使用其他解决方案来处理angular-translate。只需meridiem在您的翻译文件中创建正确的翻译。这个解决方案看起来像:

<time>
    {{ messagedata.created*1000| amDateFormat: 'D. MMM YYYY, HH:mm:ss' }}
    <span translate="meridiem"></span>
</time>
于 2017-02-17T12:55:18.853 回答
2

您可能需要meridiem自定义:https ://momentjs.com/docs/#/customization/am-pm/

只需添加另一个属性de,它应该是一个函数。函数始终可以返回静态翻译“Uhr”,因此您不需要hour, minute, isLowercase函数签名中的参数:

meridiem : function () {
    return 'Uhr';
}
于 2017-02-17T13:03:30.080 回答