【问题标题】:UTC and Dates without timeUTC 和无时间日期
【发布时间】:2021-05-14 15:09:44
【问题描述】:

我有不同时区的用户,所以我以 UTC 格式存储日期。

由于日期是付款时间表,因此我不想要时间。我解决这个问题的方法是:

var utcDate = DateTime.Parse(newPaymentPlanRequest.StartDate.ToShortDateString());

这会将数据库中的日期存储为 2021-02-10 00:00:00.0000000。

这一切似乎都很好。但是,当我使用 TimeZoneInfo 将日期转换为本地日期时,它会将时间设置为我正在寻找的前一天。

我不知道如何处理这个问题。任何建议将不胜感激。

提前谢谢你, 马蒂

【问题讨论】:

  • However when I use TimeZoneInfo to convert the date go local,你考虑过不这样做吗?
  • 如果您不想要DateTime 的“时间”部分,那么您为什么要关心时区?
  • 我的建议是始终使用NodaTime 来处理时区和它们之间的转换。永远不要随意增加或减少任何时间。如果您需要知道给定时区中的日期和时间 UTC 时间戳,NodaTime 将通过有效使用仅允许语义正确操作的域模型来防止错误计算。
  • 一个DateTime 总是有一个Time 组件。这就是00:00:00.0000000 部分。我只是为您提供了一种缩短该代码的方法(Date 属性返回带有归零时间部分的日期)。
  • 我不懂所有的解析。要在午夜从 DateTime 获取 DateTime,请使用 Date Property

标签: c# .net utc


【解决方案1】:

既然您以 UTC 格式存储所有日期,为什么不将您的计费流程运行日期也转换为 UTC?然后比较是苹果对苹果。

【讨论】:

    【解决方案2】:

    我继续使用他们当地时区的日期,并且将运行一个作业以每小时处理一次交易。

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 2011-06-06
      • 1970-01-01
      相关资源
      最近更新 更多