【发布时间】: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。