【问题标题】:Output formatted date from Angular date filter in specific locale?从特定语言环境中的 Angular 日期过滤器输出格式化日期?
【发布时间】:2016-02-17 15:19:21
【问题描述】:

我正在使用以下过滤器:

{{music.start | date : "dd MMMM yyyy"}}

Angular 以计算机的语言环境输出月份。但我让我的用户在应用程序中选择语言环境。

localize.language = "en"

告诉 Angular 以该语言而不是计算机语言环境输出格式化日期的好方法是什么?

我正在幻想类似于:

{{music.start | date : "dd MMMM yyyy" : localize.language}}

但我很感激任何解决方案的想法。

【问题讨论】:

    标签: javascript angularjs localization


    【解决方案1】:

    无论是你

    • 使用toLocaleDateString() 转换控制器中的日期并将其作为属性附加到music 对象或
    • 您使用 {{music.start| date:'shortTime'}} 之类的符号名称 - 但是,如果没有您要查找的时间信息,这不会产生真正短的日期。

    这里是blog post,关于格式化特定区域设置的不同方法。

    您的想法行不通,因为您提交了一个固定的日期字符串并期望它根据区域设置重新格式化。这很容易出错并且难以理解。

    【讨论】:

    • 我不明白我怎么能从你的帖子和文章中得到“dd MMMM yyyy”。我在挠头,所以我想我需要更一步一步的解释。感谢您的帮助!
    • 我认为重要的一点是根据用户区域设置本地化月份名称和日期格式,而不是保留您引用的日期格式(这将是欧洲大陆)?
    【解决方案2】:

    您可以在控制器中尝试以下示例

    var options = { month: 'long', day: 'numeric',year: 'numeric' };
    console.log(music.start.toLocaleString('en-US', options))
    

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString url 上还有关于 toLocaleString() 的更多信息。

    【讨论】:

      【解决方案3】:

      这是文档。

      https://angular.io/api/common/DatePipe

      他们给出的例子是:

      <!--output 'Lundi 15 Juin 2015 à 09:03:01 GMT+01:00'--> <p>The full date/time in french is: {{today | date:'full':'':'fr'}}</p>

      【讨论】:

      • AngularJS中没有locale参数,你指的是Angular(没有JS)。
      猜你喜欢
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多