当前位置:  开发笔记 > 编程语言 > 正文

如何用"yyyyMMdd Hmm"格式将字符串解析为DateTime?

如何解决《如何用"yyyyMMddHmm"格式将字符串解析为DateTime?》经验,为你挑选了1个好方法。

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

我有以下代码:

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

我收到以下错误:

mscorlib.dll中发生未处理的"System.FormatException"类型的异常附加信息:String未被识别为有效的DateTime.

我究竟做错了什么?我怎么解决这个问题?

更新:

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

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

Soner Gönül.. 5

由于H说明符可以是2位数,因此此方法尝试解析您的83with H说明符.既然没有这么一小时,你就得到了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团队也建议这样做.



1> Soner Gönül..:

由于H说明符可以是2位数,因此此方法尝试解析您的83with H说明符.既然没有这么一小时,你就得到了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团队也建议这样做.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有