-1

我正在以字符串的形式获取日期/时间值,并将其转换为DateTime对象。

eg. 2012-11-10 11:37:06

我知道这个时间与我系统的本地时间不同。

如何为DateTime对象分配时区,以便我可以准确地表示本地时区的时间并对夏令时变化敏感?

4

2 回答 2

0

TimeZoneInfo.ConvertTimeToUtc可能会做你想做的事。

通过这种方式,您可以转换(在导入时)并将所有时间存储为UTC(假设您知道原始时间关联的时区夏令时偏移等),然后在任何时区显示它们。DateTime我已经链接到同时接受一个对象和一个对象的重载方法TimeZoneInfo

还有其他方法TimeZoneInfo也可用于此类转换。

于 2012-11-13T22:17:51.760 回答
0

ADateTime不是时区,也不完全知道时区。它有一个Kind,表示它是在系统时区 ( Local)、UTC ( Universal) 还是“其他”( Unspecified) 中。

DateTimeOffset, 类似于 aDateTime但也与 UTC 有偏移。不过,这与拥有时区不同——它不知道在任何其他时间点的当地时间。

我有偏见,但我建议使用具有各种类型的Noda Time来表示不同的概念:

  • ZonedDateTime- 特定时区的本地日期/时间,与 UTC 有偏差,以防出现歧义
  • OffsetDateTime- 与 UTC 有偏移的本地日期/时间(但没有特定时区)
  • LocalDateTime- 只是一个本地日期/时间,没有特定的时区或偏移量
  • LocalDate- 没有时间成分或区域的日期
  • LocalTime- 只是一个日期时间,没有日期或区域

所有这些还具有关联的日历系统(与 不同DateTime)。在一瞬间,Instant这只是 Unix 时代的一些滴答声。

如果你想坚持 BCL 类型,你可以在你自己的数据类型中保留DateTimea 。TimeZoneInfo

于 2012-11-13T22:21:07.510 回答