有关将数值转换为24小时格式时间的问题

时间:2015-01-13 12:33:25

标签: c# string datetime format

我试图将数值转换为24小时格式化时间,但代码无效。这是我的代码:

string xx = 
    Convert.ToDateTime(TimeSpan.FromHours(01).ToString())
           .ToString("HH", System.Globalization.CultureInfo.InvariantCulture);

OR

string xx1 = 
    new DateTime(TimeSpan.FromHours(01).Ticks)
    .ToString("HH", System.Globalization.CultureInfo.InvariantCulture);

OR

var t = DateTime.Now.TimeOfDay;
string xx2 =new DateTime(t.Ticks).ToString("hh:mm:ss tt");

OR

string ss = TimeSpan.FromHours(01).ToString("HH");

以上代码无效。我搜索了谷歌,每个人都说使用HH来获取24小时格式的小时。任何人都可以告诉我这是否是我个人电脑的特定问题?

1 个答案:

答案 0 :(得分:0)

  

没有错误,而是第一行代码返回01而不是13。

因为您从午夜开始添加1小时。您应该添加13小时,而不是像

string xx = Convert.ToDateTime(TimeSpan.FromHours(13).ToString())
           .ToString("HH", System.Globalization.CultureInfo.InvariantCulture);

由于TimeSpan.FromHours(01).ToString()01:00:00作为string返回,Convert.ToDateTime将此字符串解析为13/01/2015 01:00:00 1

无论您使用01还是hh说明符,HH的{​​{3}}表示都将与自身相同。

在第二个示例中,您将TimeSpan计算为24-hour clockTicks计算此时间01/01/0001DateTime01/01/0001 01:00:00计算01 DateTime(Int64) 1}}然而,它的24小时时钟表示将是01.01.0001 15:10:36

在您的第三个示例中,您使用DateTime(Int64) constructor 调用了hh:mm:ss tt构造函数,这就是为什么您的DateTime将是03:11:31 PM(当我立即运行您的示例时)以及它& #39; HH代表TimeOfDay property中的TimeSpan

由于{{1}}没有InvariantCultureFormatException {{1}}格式说明符,您的第四行会引发standard

1 由于您只解析了没有日期的小时,因此此方法将日期部分作为今天返回