【问题标题】:Convert the any locale Date to en-US locale date string将任何语言环境日期转换为 en-US 语言环境日期字符串
【发布时间】:2021-01-27 23:54:21
【问题描述】:

我已将应用程序转换为德语作为区域格式,并且 locale_id 已注册,因为我能够看到预期的日期格式。但由于我的日期以德语格式显示,即 13.10.2020(它使用“.”特殊字符,格式为“DD.MM.YYYY”

当我从日期选择器中选择日期时,它会按预期被选中,但在保存时,我必须将格式转换为正常的 en-US 语言环境以供数据库存储。

例如—— 德语作为 locale_ID -> 日期格式为 DD.MM.YYYY 但是在保存时我想将其转换为 YYYY-MM-DD

我已尝试关注 -

  1. FormatDate("DD.MM.YYYY", "shortDate", "en-US") 的 @angular/common 但它会引发 Invalid Date 错误
  2. moment("DD.MM.YYYY").format("YYYY-MM-DD") of moment.js 但这给了我无效的日期。

你能帮我看看我应该如何在不更改 locale_Id 的情况下将日期更改为 en-US 区域设置,因为我只希望系统使用德语。

我的系统接受几乎所有的语言环境,所以从德语到英语就是一个例子。所以我正在寻找一些通用的方法来转换它。

【问题讨论】:

    标签: angular date momentjs locale


    【解决方案1】:

    你可以用 Moment.js 试试这个

    console.log(moment("02.04.2021", "DD.MM.YYYY").format('YYYY-MM-DD'));
    
        moment.locale(this.locale);
        if (!format) { format = "YYYY-MM-DD"; }
        var localeFormat = moment.localeData().longDateFormat('L');
        return moment(date, localeFormat).format(format);
    

    【讨论】:

    • 是的,但这只会转换德语格式。当我有一些不同的语言环境时,这将无济于事。因此我完成了this. moment.locale(this.locale); if (!format) { format = "YYYY-MM-DD"; } var localeFormat = moment.localeData().longDateFormat('L'); return moment(date, localeFormat).format(format);
    • 这不适用于 zh-hant 语言环境。它给出了无效的。 :( 所以请转至momentjs.com 并在多语言环境支持部分检查您的语言环境是否受支持。
    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多