【问题标题】:Date converting confusion with angular material date picker and SQL Server database日期转换与角度材料日期选择器和 SQL Server 数据库的混淆
【发布时间】:2021-04-17 16:01:20
【问题描述】:

我有一个关于解决以下问题的好方法的简短问题:我使用 Angular Material 日期选择器来选择应用程序上的日期。然后该日期将存储在数据库中。在此过程中,它将“自动”转换为 UTC。

当我从数据库读取/加载它时,它不会自动转换回本地日期,这会导致一些问题。

因为在将数据保存在数据库上的过程中,我没有编写任何代码行来将数据从本地日期转换为 UTC将转换为本地日期)。在从数据库加载数据时,我需要做什么/配置以将 UTC 日期“自动”转换为本地日期?

感谢您的帮助。

【问题讨论】:

  • SQL Server 中的数据类型是什么?您的所有应用程序和 sql server 是否也在同一台机器上。
  • 感谢您的快速回复。 SQL Server 上的数据类型是 datetime2。应用程序和 SQL Server 当前在同一台机器上运行。

标签: sql-server asp.net-core angular-material


【解决方案1】:

方法有一个问题。

  1. 当您将数据从 Angular 发布到 API 调用时。那时它将以 UTC 值发布日期,如果您查看发布日期,那么它的末尾有 Z。

  2. 现在 API 会将该日期存储到 sql server。现在,一旦它将存储在 SQL Server 中,它就没有时区信息。为此,您必须使用 DatetimeOffset 数据类型。

另一个

现在,当您从 SQL Server 读取时,它没有时区信息,因此它将按原样读取并视为本地时间,因此它将在 UI 中显示错误的值。

大多数情况下,当您从数据库读取数据并转换回本地数据时,您必须做出决定,这是您必须执行的步骤。

【讨论】:

  • 非常感谢。数据库中缺少的时区信息是问题所在。将类型更改为 DatetimeOffset 修复了它。
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多