在特定区域设置中从Angular日期过滤器输出格式化日期?

时间:2016-02-17 15:19:21

标签: javascript angularjs localization

我使用以下过滤器:

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

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

localize.language = "en"

告诉Angular以该语言而不是计算机区域设置输出格式化日期有什么好方法?

我幻想着类似的东西:

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

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

3 个答案:

答案 0 :(得分:0)

你要么

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

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

由于您提交了固定日期字符串并希望根据区域设置重新格式化,因此您的想法无法运行。这很容易出错并且难以理解。

答案 1 :(得分:0)

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

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网址上还提供了有关 toLocaleString()的更多信息。

答案 2 :(得分:0)

这是文档。

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>