如何将字符串解析为DateTime;yyyyMMdd嗯";总体安排

本文关键字:quot yyyyMMdd 字符串 DateTime | 更新日期: 2023-09-27 18:26:20

我在解决这个问题时遇到了巨大的问题。我正在尝试使用Datetime.ParseExact().解析字符串

我有以下代码:

DateTime.ParseExact("20151210 832", "yyyyMMdd Hmm", CultureInfo.InvariantCulture);

我得到以下错误:

中发生类型为"System.FormatException"的未处理异常mscorlib.dll附加信息:字符串未被识别为有效日期时间。

我做错了什么?我该如何解决这个问题?

更新:

我也可以得到这样的时间:

00:01 => 1
01:00 => 1
01:10 => 10

如何将字符串解析为DateTime;yyyyMMdd嗯";总体安排

由于H说明符可以是2位数,因此此方法尝试使用H说明符解析83。由于没有这样的一个小时,你得到了FormatException

对于您的情况,防止这种情况的一种方法是在8之前加一个前导零。

var s = "20151210 832";
var result = s.Split(' ')[0] + " 0" + s.Split(' ')[1];
var dt = DateTime.ParseExact(result, "yyyyMMdd Hmm", CultureInfo.InvariantCulture);

请注意,这将不适用于所有情况。例如,如果您的小时部分已经为两位数,则如果您的一分钟没有前导零。。等

或者,您可以为所有部分设置分隔符,但在这种情况下,您需要同时操作字符串和格式。

.NET团队也建议这样做。

只需在分钟前插入一个分隔符(例如,一个空白),然后就可以这样解析它:

string example = "20151210 832";
example = example.Insert(example.Length - 2, " ");
var dateTime = DateTime.ParseExact(example, "yyyyMMdd H mm", CultureInfo.InvariantCulture);

我假设日期时间字符串总是包含两位指定分钟的数字(查看一篇关于自定义日期和时间格式字符串的文章)。如果我的假设是错误的,那么这个字符串就无法解析。