我试图解析一个包含一些DateTime线的巨大文件。 由于某种原因,DateTime.TryParseExact仅在某些行上返回true而不是其他行 我的DateParse.txt文件看起来像这样:
2015-02-27 01:01:30
2015-02-27 01:01:43
2015-02-27 01:01:53
2015-02-27 01:02:05
2015-02-27 01:02:15
2015-02-27 01:02:36
2015-02-27 01:02:51
2015-02-27 01:03:04
2015-02-27 01:03:21
2015-02-27 01:03:36
2015-02-27 01:03:46
2015-02-27 01:04:01
2015-02-27 01:04:13
2015-02-27 01:04:29
2015-02-27 01:04:40
string line;
DateTime DateTime;
using (StreamReader Date = new StreamReader("C:\\DateParse.txt")
while((line = Date.ReadLine()) != null)
if (DateTime.TryParseExact(line, "yyyy-mm-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime))
Console.WriteLine("True");
else
Console.WriteLine("False");
我的输出是:
假
假
假
假
真
真
真
真
其余的都是假的......
任何帮助解决这个问题都将非常感激。
答案 0 :(得分:5)
因为MM
specifier需要几个月而mm
specifier需要几分钟。
在您的情况下,仅如果您的字符串具有相同的分钟和月份值,则将对其进行解析。
这就是为什么只有这些值成功解析的原因。
2015-02-27 01:02:05
2015-02-27 01:02:15
2015-02-27 01:02:36
2015-02-27 01:02:51
顺便说一句,当我的意思是成功时,这并不意味着它返回正确的DateTime
值。由于您未提及yyyy-mm-dd HH:mm:ss
格式的任何月份部分,因此默认情况下,DateTime
的月份部分将为1
。这就是为什么在解析操作后他们的DateTime
值将是;
2015-01-27 01:02:05
2015-01-27 01:02:15
2015-01-27 01:02:36
2015-01-27 01:02:51
这是基于您的字符串的错误值。
在您的情况下,正确的格式应为yyyy-MM-dd HH:mm:ss
。
答案 1 :(得分:3)
更改此行并检查
if (DateTime.TryParseExact(line, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime))
答案 2 :(得分:1)
using (StreamReader Date = new StreamReader("C:\\DateParse.txt")
while((line = Date.ReadLine()) != null)
if (DateTime.TryParseExact(line.Trim(), "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime))
Console.WriteLine("True");
else
Console.WriteLine("False");
使用line.Trim()
和yyyy-MM-dd HH:mm:ss
其中MM
表示月份,mm
表示分钟
答案 3 :(得分:0)
只需将mm mont更改为MM
DateTime.TryParseExact(line, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out DateTime)
它会工作