我试图将数值转换为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小时格式的小时。任何人都可以告诉我这是否是我个人电脑的特定问题?
答案 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 clock,Ticks
计算此时间01/01/0001
,DateTime
将01/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}}没有InvariantCulture
或FormatException
{{1}}格式说明符,您的第四行会引发standard。
1 :由于您只解析了没有日期的小时,因此此方法将日期部分作为今天返回