【发布时间】:2017-05-22 20:00:54
【问题描述】:
我正在处理来自多个来源的数据,我需要汇总一个准确的日期时间。
我有:
A) string 代表一天中的某个时间,例如:“4:00 pm”
B) 一个 DateTime 对象,旨在表示一个纯日期,通过创建为特定日期的午夜、祖鲁时间(00:00 的偏移量)。
C) string 代表时区语言环境,例如:“America/Los_Angeles”
如何获得精确的DateTime 对象,具有正确的刻度数,表示在该日期 (B) 在该区域设置 (C) 经历的时间 (A)??
【问题讨论】:
-
您应该考虑使用
DateTimeOffset而不是DateTime。 -
在 C# 中处理日期和时间时,我总是建议考虑使用 NodaTime。它避免了内置
DateTime和DateTimeOffset类的许多谬误。 -
好的,我可以使用 DateTimeOffset 作为我的输出,但我无法控制这些输入类型(A、B、C)。此外,NodaTime 在这里可以提供任何答案,但我更喜欢没有它也可以工作的正确答案。
-
这里有一个漂亮、简单的时区转换器库:github.com/mj1856/TimeZoneConverter,它将在 TZDB 和 Windows 时区之间进行转换。然后您可以将其与 .NET Timezone 函数一起使用(IIRC 至少需要 .NET 4.5,尽管它们也可能存在于 4.0 中)。
-
请澄清 - 您是说日期是基于 UTC 日期,但时间是指定时区的本地时间?