【发布时间】:2021-09-13 12:55:07
【问题描述】:
我正在尝试实施 DICOM 规范来解析 DateTime。标准specify表示:
一个连接的日期时间字符串,格式为:
YYYYMMDDHHMMSS.FFFFFF&ZZXX
这个字符串的组成部分,从左到右,YYYY = 年,MM = 月,DD = 日,HH = 小时(范围“00” - “23”),MM = 分钟(范围“00” - "59"), SS = 秒 (范围 "00" - "60")。
FFFFFF = 小数秒包含小至百万分之一秒的小数部分(范围“000000”-“999999”)。
&ZZXX 是从协调世界时 (UTC) 偏移的可选后缀,其中 & = “+”或“-”,ZZ = 小时,XX = 偏移分钟。
目前我能想到的只有
DateTime.ParseExact(str, "yyyyMMddHHmmss.FFFFFF", CultureInfo.InvariantCulture);
我已经成功地测试了它:
var dateTimeValueStr = "20010301125745.490000";
和
var dateTimeValueStr = "20010301125745";
但是,我无法理解有关如何实现对从协调世界时 (UTC) 偏移的可选后缀进行解析的文档。似乎'zzz' 仅适用于显式冒号“:”。而且我不能使用像"\\+hhmm" 这样的东西,因为在同一个格式字符串中会有多个“h”模式。
问:
有没有办法通过调用 DateTime.ParseExact 来读取这个 DICOM 日期时间?还是我需要单独调用DateTime.ParseExact 来读取日期时间(无时区),然后再调用TimeSpan.ParseExact 来解析时区信息(see here)。
典型示例:
var dateTimeValueStr = "20010301125745.490000-0500";
【问题讨论】:
-
包含偏移量的类型是
DateTimeOffset,而不是DateTime
标签: c# datetime datetime-format dicom