为什么此代码收到输入错误,如" 8:16 AM":
string time = Console.ReadLine();
DateTime outValue = DateTime.MinValue;
bool error = DateTime.TryParseExact(time, "HH:mmtt" /*"hh:mmtt"*/, CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue);
Console.WriteLine(error);
Console.WriteLine(outValue);
Console.Read();
我应该设置什么才能接受这样的输入" 8:16"并将其转换为DateTime对象?
答案 0 :(得分:5)
您使用的HH
需要2个小时的时间。您可以通过08:16AM
或将HH
更改为H
。
答案 1 :(得分:1)
由于期待两个小时的数小时而引起的。
如果缺少前导零,则可以添加前导零。
string time = Console.ReadLine();
DateTime outValue = DateTime.MinValue;
if (time.Length == 6)
time = "0" + time;
bool error = DateTime.TryParseExact(time, "HH:mmtt" /*"hh:mmtt"*/, CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue);
Console.WriteLine(error);
Console.WriteLine(outValue);
Console.Read();
但最好使用Jamiec指出的H:mmtt
模板
答案 2 :(得分:1)
这是因为你写了HH:mmtt。 试试这个:
bool error = DateTime.TryParseExact(time, "H:mm:tt" /*"h:mm:tt"*/,
CultureInfo.InvariantCulture, DateTimeStyles.None, out outValue);