将 DXL 时间戳转换为 C# DateTime
Converting DXL timestamp to C# DateTime
完全搞砸了 Lotus Notes DXL 时间戳格式...
给定的是从 Lotus Notes 文档导出的 DXL 的时间戳,如下所示:
20141104T132939,49+01
正在尝试使格式与 DateTime.ParseExact
兼容,例如:
DateTime.ParseExact(dateStr.Substring(0, 13), "yyyyMMddThhmm", System.Globalization.CultureInfo.InvariantCulture).ToString("dd.MM.yyyy hh:mm");
但是没有运气 >>> System.FormatException "no valid DateTime format"
.
C# 可以按原样处理上述时间戳吗?
问题出在您的文本格式上 - 您使用了 hh
,即 12 小时 时钟,但您的值为 13。您want HH
,也就是24小时制。我还建议引用 T
因为你只想要文字 T
字符,并且第二个字符也采用以下两个字符:
DateTime dateTime = DateTime.ParseExact(
dateStr.Substring(0, 15),
"yyyyMMdd'T'HHmmss",
CultureInfo.InvariantCulture);
然后我会建议尽可能长时间将其保留为 DateTime
,仅在您实际需要将其显示给客户时才转换回字符串。
完全搞砸了 Lotus Notes DXL 时间戳格式... 给定的是从 Lotus Notes 文档导出的 DXL 的时间戳,如下所示:
20141104T132939,49+01
正在尝试使格式与 DateTime.ParseExact
兼容,例如:
DateTime.ParseExact(dateStr.Substring(0, 13), "yyyyMMddThhmm", System.Globalization.CultureInfo.InvariantCulture).ToString("dd.MM.yyyy hh:mm");
但是没有运气 >>> System.FormatException "no valid DateTime format"
.
C# 可以按原样处理上述时间戳吗?
问题出在您的文本格式上 - 您使用了 hh
,即 12 小时 时钟,但您的值为 13。您want HH
,也就是24小时制。我还建议引用 T
因为你只想要文字 T
字符,并且第二个字符也采用以下两个字符:
DateTime dateTime = DateTime.ParseExact(
dateStr.Substring(0, 15),
"yyyyMMdd'T'HHmmss",
CultureInfo.InvariantCulture);
然后我会建议尽可能长时间将其保留为 DateTime
,仅在您实际需要将其显示给客户时才转换回字符串。