我发现最好的等效项是DateTimeOffset + TimeZoneInfo的组合。那是最好的方法,创建一个包含这两个类的结构并确保它们保持一致吗?
iCMS 回答:.Net中是否有ZonedDateTime(Java)?
否,.NET基类库中没有类似于ZonedDateTime
的内置类型。
正如其他人指出的那样,如果您正在寻找类似于Java的Joda Time或java.time
的时间模型,请考虑使用Noda Time。它具有ZonedDateTime
结构。
如果您不想使用Noda Time,并且确实需要包含日期时间偏移量和时区的单个对象,那么建议使用具有DateTimeOffset
和TimeZoneInfo
字段的结构的方法感。以下是一些其他提示:
-
将其设计为不可变结构很重要,换句话说-仅从构造函数获取输入。仅在字段上公开属性获取者。不要直接公开字段,也不要在属性上提供setter。
-
请注意您要如何处理
DateTimeOffset
的偏移量不是给定时区的正确偏移量的情况。您可能需要对其进行调整,或者可能引发异常。 -
您可能需要为您的结构提供自定义序列化,如果保存到数据库中,则可能需要对其进行解构。在这两种情况下,仅保留
Id
组件的字符串TimeZoneInfo
。不要尝试序列化或存储整个对象。
也就是说-您可能需要重新考虑是否需要这样的对象。在许多情况下,只需单独使用DateTimeOffset
和TimeZoneInfo
就足够了。