繁体   English   中英

DateTime.TryParseExact()无法识别PM指示符,AM按预期工作

[英]DateTime.TryParseExact() not recognizing the PM designator, AM working as expected

我正在编写一个程序来读取日志文件,并一路转换时间戳。 当前,我正在使用DateTime.TryParseExact()快速分析时间戳,以确保一切正确。 我遇到的问题是仅识别AM指示符,PM正常工作。 我在以下代码段中隔离了该问题:

string format = "M/dd/yyyy H:mm:ss tt";

string teststringPM = "1/21/2019 3:25:32 PM";
string teststringAM = "1/21/2019 3:25:32 AM";

DateTime placeholderPM;
DateTime placeholderAM;

DateTime.TryParseExact(teststringPM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderPM);
DateTime.TryParseExact(teststringAM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderAM);

Console.WriteLine("placeholderPM:");
Console.WriteLine(placeholderPM.ToString());

Console.WriteLine("placeholderAM:");
Console.WriteLine(placeholderAM.ToString());

输出结果如下:

placeholderPM:
1/1/0001 12:00:00 AM

placeholderAM:
1/21/2019 3:25:32 AM

我们可以看到placeholderPM是默认的新datetime值。 我尝试将IFormatProvider更改为en-US,但没有任何行为更改。

任何见解非常感谢!

看起来您可能正在使用“ H”标识符而不是“ h”。 这是预期的行为,因为24小时使用大写字母“ H”。 使用小写字母“ h”可以解决此问题。

例如,格式将变为:

string format = "M/dd/yyyy h:mm:ss tt";

这会更详细

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM