从特定区域设置的角度日期过滤器输出格式化日期

Output formatted date from Angular date filter in specific locale?

本文关键字:日期 过滤器 输出 格式化 区域 设置      更新时间:2023-09-26

我正在使用以下过滤器:

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

Angular 输出计算机区域设置中的月份。但我让我的用户在应用程序中选择区域设置。

localize.language = "en"

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

我幻想着类似的东西:

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

但我欣赏任何解决方案的想法。

要么你

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

下面是一篇关于设置特定区域设置格式的不同方法的博客文章。

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

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

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

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

这是文档。

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>