将 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,仅在您实际需要将其显示给客户时才转换回字符串。