【发布时间】:2018-02-03 00:02:06
【问题描述】:
我正在解析一个 HL7 TimeStamp 字段,其格式是...
YYYYMMDD[HHMM[SS[.SSSS]]][+/ -ZZZZ]
...表示偏移量是可选的。如果未提供偏移量,您需要假设日期/时间值是发送数据的系统本地的,这可能与解析数据的消费系统处于不同的时区。如果提供了偏移量,则应将其作为时间戳的一部分保留。
所以我要么使用 DateTime.ParseExact 要么使用 DateTimeOffset.ParseExact,但是这两种数据类型似乎都不适合这两种用例,因为如果提供了时区偏移量,DateTime 将不会捕获它,但如果没有提供它,DateTimeOffset可以假设我的本地偏移量,而不是不正确的来源或通用。
我认为我需要某种方式在同一数据类型中具有偏移量或没有偏移量。有什么建议吗?
【问题讨论】:
-
DateTime.Kind已经应该涵盖绝对/相对... -
DateTimeOffset 可以捕捉世界时,没有什么阻碍您手动设置系统发送数据的时区。
-
我想我可以提供一个可以接受的答案,但有一个问题:您声明如果未提供偏移量,则假设该值对于发送数据的系统而言是本地的。你怎么知道系统在哪个时区?是分开寄的吗?是静态的吗?它是否以特定格式提供,您能举个例子吗?谢谢。
标签: c# .net datetime datetimeoffset