我正在尝试解析该日期
5/10/2013 002704
var stt = "5/10/2013 002704";
result = DateTime.ParseExact(stt, "dd-MM-yyyy HHmmss", CultureInfo.InvariantCulture);
但我得到了例外
字符串未被识别为有效的DateTime。
然而!此代码仅用于解析时间*without date*
var stt = "002704";
result = DateTime.ParseExact(stt, "HHmmss", CultureInfo.InvariantCulture);
我希望有人能帮助我解决这个问题并提前感谢...
提示:这也是失败
var stt = "5/10/2013 002704";
result = DateTime.ParseExact(stt, "dd/MM/yyyy HHmmss", CultureInfo.InvariantCulture);
嗯它有效!感谢每一个人帮助我,为他的\非常好的帮助,我非常感谢。此外,我将在下次考虑XY问题:D。
答案 0 :(得分:5)
啊,你正在使用dd
进行解析,但传入d
。将输入字符串更改为"05/10/2013 002704"
,并确保在分隔符中使用/
。
var stt = "05/10/2013 002704";
result = DateTime.ParseExact(stt, "dd/MM/yyyy HHmmss", CultureInfo.InvariantCulture);
修改强>
抱歉,我不得不接听电话,无法完成我的想法。您可能不需要使用dd
d
。它适用于05/10/2013
或任何数字(最多31个)(如问题评论中所述)。另外,我认为@DanJ对此方法的用例做了很好的评论。
简短的回答是,如果您要使用Parse * Exact *(),您最好确保您提供的字符串与格式说明符匹配。
如果您要继续使用ParseExact
,那么您应该使用:
result = DateTime.ParseExact(stt, "d/MM/yyyy HHmmss", CultureInfo.InvariantCulture);
答案 1 :(得分:3)
你有两件事是错的:
dd
作为该月的某一天,如果该日是一位数,则需要前导0
。请改用d
。-
,但输入数据为/
。答案 2 :(得分:2)
首先,您使用包含-
(dd-MM-yyyy)的格式字符串进行语法分析,而字符串包含/
(2013年5月10日)。
另一件事是,日组件应该是d
,而不是dd
,因为它是5
而不是05
。
var stt = "5/10/2013 002704";
result = DateTime.ParseExact(stt, "d/MM/yyyy HHmmss", CultureInfo.InvariantCulture);
答案 3 :(得分:2)
为什么所有人都争论它应该是“d”与“dd”,还是“M”与“MM”?
你们都可以吃蛋糕而且也吃它!
它们都是有效的,所以将它们视为有效。为自己构建一个允许格式的 ARRAY ,并将其传递给DateTime.TryParseExact()。现在所有这些案件都会像你期望的那样处理:
DateTime result;
var stt = "5/10/2013 002704";
string[] formats = { "d/M/yyyy HHmmss", "dd/MM/yyyy HHmmss", "d/MM/yyyy HHmmss", "dd/M/yyyy HHmmss" };
if (DateTime.TryParseExact(stt, formats, null, System.Globalization.DateTimeStyles.None, out result))
{
// ... do something with "result" in here ...
Console.WriteLine(result.ToString());
}
else
{
// ... parse failed ...
}