我从一个文本文件中接收数据,其中日期通常是“标准时间”(如中央标准时间或东部标准时间)。我特别指的是没有观察到任何夏令时调整。使用Noda Time,我试图找出最佳表示方式。
我首先想到的是应该为此创建一个DateTimeZone。我注意到某些“标准时间”时区包含在tz数据库中(例如,“America / Cancun”可用于东部标准时间),但其他时区似乎没有任何东西来表示它们在数据库中的“标准时间”变体。
然后我想我应该创建一个Offset,或者直接从Offset创建一个DateTimeZone,但我似乎找不到一种方法来获取DateTimeZone的基本偏移量。对于大陆美国的时区,我相当确定我只需执行
我可以只存储与每个文件提供程序相关联的原始偏移量,但如果配置说它处于中央标准时间而不是说它具有-6的偏移量,则配置应用程序要容易得多。
我是否错过了某种方法?或者是我的概念化问题有问题,因此这不是正确的方法?
我首先想到的是应该为此创建一个DateTimeZone。我注意到某些“标准时间”时区包含在tz数据库中(例如,“America / Cancun”可用于东部标准时间),但其他时区似乎没有任何东西来表示它们在数据库中的“标准时间”变体。
然后我想我应该创建一个Offset,或者直接从Offset创建一个DateTimeZone,但我似乎找不到一种方法来获取DateTimeZone的基本偏移量。对于大陆美国的时区,我相当确定我只需执行
DateTimeZone.ForOffset(localTimeZone.MinOffset)
(其中localTimeZone
是DateTimeZone),但我非常怀疑这将适用于更奇怪的时区。我也尝试过 DateTimeZone.ForOffset(localTimeZone.GetZoneInterval(SystemClock.Instance.GetCurrentInstant())。StandardOffset)
,但这样转弯抹角,所以我怀疑它不正确。我可以只存储与每个文件提供程序相关联的原始偏移量,但如果配置说它处于中央标准时间而不是说它具有-6的偏移量,则配置应用程序要容易得多。
我是否错过了某种方法?或者是我的概念化问题有问题,因此这不是正确的方法?
DateTimeZone
,标准偏移来自当前时刻。我们所有的输入都是在现在时间之前,所以我不需要过多担心如何表示更改基本偏移后的时间。一旦我们加载了一个输入,我可以只使用“即时”来表示它。 - Nathan Wilson