【问题标题】:Angular 11: formatted date is set always to 1970Angular 11:格式化日期始终设置为 1970
【发布时间】:2021-01-08 17:08:07
【问题描述】:

升级到 Angular 11 后,date pipe 不再正确显示。如果我尝试

 date to display {{1610038272|date:"medium"}} === Jan 07, 2021, 16:51:12

但它会显示

 Jan 19, 1970, 16:13:58

是否存在任何阻止正确转换的重大更改?还是我需要额外设置一些东西?

【问题讨论】:

  • valueOf() 2021 年 1 月 7 日 16:51:12 是 1595350272321。1610038272 已成为过去,回落到 1970 年
  • 很可能取决于时区。但无论如何都不像 1970 年!!!
  • 当你console.log(new Date(1610038272));时你的控制台会说什么?
  • 奇怪......它说1970-01-19T15:13:58.272Z 所以显然应该责怪JS。它在你的控制台上说什么? new Date(1610038272)
  • 同样的事情(只是时区不同)。这就是为什么我要求你检查你的控制台。它与 Angular 无关。如果这是与数值对应的日期,为什么您会感到惊讶?

标签: angular angular11


【解决方案1】:

您需要以毫秒为单位提供日期

Convert timestamp to date using Angular 2 pipes

{{ 1610038272 * 1000 | date: 'medium' }}

【讨论】:

  • 感谢您的提示。不知何故,Spring 后端转换现在错误地序列化了Date。不知道为什么,但我现在使用 toEpochMilli 并且转换成功。谢谢你的方向!
  • 是的,我也发生了同样的事情。我们最近从 Date 迁移到 LocalDateTime,我们必须为 Date 编写一个自定义的 jackson 序列化程序以保持向后兼容性。将 getEpochSeconds 更改为 toEpochMilli 有效!
猜你喜欢
  • 2021-08-25
  • 1970-01-01
  • 2023-01-16
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多