关于DateTime格式"%h:%m:%s"允许小时为" 00"

时间:2014-08-05 05:38:56

标签: c# .net datetime

我有一个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。我想在这种情况下抛出错误。请提供您的意见。

2 个答案:

答案 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小时。