【问题标题】:Wrong datetime saved a GCP Datastore .net错误的日期时间保存了 GCP 数据存储 .net
【发布时间】:2020-06-11 13:55:06
【问题描述】:

我在 GCP 上部署了一个 .netcore 服务,该服务将实体保存在 GCP Datastore 数据库中。实体具有 Datetime 属性,但日期未正确保存。正如 GCP Datastore 所代表的那样,我确实将实体中的所有日期属性设置为 UTC 日期,但是在保存实体时,似乎日期属性正在添加时区偏移量。例如,我保存了一个具有属性“createdAt”的实体:“2020-06-10 10:36:00.000z”,当我导航到 Datastore GCP 控制台时,我可以看到它已保存为“2020-06-10 (14:36:30.000) CEST"。

有什么想法吗?

编辑

为了澄清我的示例,我的当地时间是“2020-06-10 (12:36:30.000) CEST”。根据 Datastore.V1 网络客户端的要求,我将时间转换为 UTC,因此它是“2020-06-10 10:36:00.000z”,但它存储为“2020-06-10 (14:36:30.000) CEST”。

此日期来自从 GMail API 读取的电子邮件,它是电子邮件的接收日期。

该服务在法兰克福 (europe-west-3) 托管的 App Engine 应用程序中运行。有趣的是,如果我在 labtop 本地运行服务,日期保存得很好?!?!?!?

【问题讨论】:

  • 你能分享你用来保存日期的函数的代码片段吗?默认情况下,App Engine 有一个 UTC 时间,我想尝试在我这边复制这个问题。
  • 我们最终决定迁移到 PostgresQL。 GCP Datastore 很棒,但它有一些查询限制,我们可以轻松绕过

标签: .net-core google-cloud-platform google-cloud-datastore


【解决方案1】:

GCP 控制台正在将您的 UTC 日期转换为您的本地日期,例如尝试转换为 crete a new test entity

添加“日期和时间”类型的属性,选择以 GTM/UTC 作为时区的日期和时间。

添加另一个属性,此时第一个属性的卡片将被折叠并应显示本地时间之前的属性值

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多