关于日期时间格式"%h:%m:%s"允许时间为“00”

本文关键字:时间 quot 许时间 格式 日期 于日期 | 更新日期: 2023-09-27 18:16:19

我有一个文本框,以"%h:%m:%s"的格式输入时间。允许的时间输入:

01:20:00

12:20:00

我正在转换字符串从TextBox使用:

DateTime.TryParseExact("00:20:00", "%h:%m:%s",
                       culture, DateTimeStyles.None, out newData);

但以上代码在通过newData提供数据时,将小时00转换为12。在这种情况下,我想抛出错误。

关于日期时间格式"%h:%m:%s"允许时间为“00”

似乎您应该尝试解析为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();
        }
    }
}

您应该使用大写的"H"来表示24小时的时间。