在数据库中,我有一列的数据类型为Date
。我使用ORM映射此数据库,因此,在适当的C#类中,我具有一个具有DateTime数据类型的字段。从FHIR客户端收到一个JSON文档,其日期格式为ISO 8601,其中包含时区。当我使用从字符串到DateTime的转换时,我失去了一个时区,并且在数据库中,我存储了一个没有时区的日期。当FHIR客户端要求我提供一些已经发送给我的数据时,我读取了数据库,当然返回了原始日期,但是(!!!)没有时区。
是否有任何解决方法可以存储原始FHIR请求中的时区?我无法修改现有数据库,因为它是一个成熟的旧项目,并且使用了很多这些表等。
FHIR类型是偏移量,不是时区。
因此,基本上,如果您没有选择将偏移量存储到数据库中,则需要假设该值在其中,并让您的代码进行处理,并在需要时添加偏移量值。FHIR客户端中的仅日期类型不需要它们上的时间(或区域),但是我假设您是指datetime fhir属性。
[DateTime和DateTimeOffset c#类上有一些扩展方法,可以帮助您在(.ToFhirDate()和.ToFhirDateTime(offset))中编码这些假设。
将所有值都强制为UTC是一种方法,但是如果您的数据库不期望那样,那么您将进一步使事情变得混乱。