我有一个TextBox以"%h:%m:%s"
格式输入时间。
允许的时间输入:
1时二十分00秒
12点20分○○秒
我正在使用:
转换从TextBox中获取的字符串DateTime.TryParseExact("00:20:00", "%h:%m:%s",
culture, DateTimeStyles.None, out newData);
但是,当通过newData提供数据时,上面的代码会将小时00
转换为12
。我想在这种情况下抛出错误。请提供您的意见。
答案 0 :(得分:2)
您似乎应该尝试解析为TimeSpan
而不是DateTime
。
使用以下string.Format
模式转换为TimeSpan
:
var pattern = @"hh\:mm\:ss";
有关详细信息,请参阅MSDN:http://msdn.microsoft.com/en-us/library/ee372287(v=vs.110).aspx
<强> 已更新 强>
工作示例代码:
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
DateTime newData;
TimeSpan newSpan;
DateTime.TryParseExact("00:20:00", "%h:%m:%s",
CultureInfo.DefaultThreadCurrentCulture, DateTimeStyles.None, out newData);
Console.WriteLine(newData);
// 8/5/2014 12:20:00 AM
TimeSpan.TryParseExact("00:20:00", @"hh\:mm\:ss",
CultureInfo.DefaultThreadCurrentCulture, TimeSpanStyles.None, out newSpan);
Console.WriteLine(newSpan);
// 00:20:00
Console.WriteLine(newSpan.Hours);
// 0
Console.WriteLine(newSpan.TotalHours);
// 0.33~
Console.ReadLine();
}
}
}
答案 1 :(得分:1)
你应该使用大写字母“H”24小时。