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

Issue regarding convert numeric value to 24 hrs format time

我试图将数值转换为 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");

以上代码无效。我搜索了 Google,每个人都说使用 HH 来获取 24 小时格式的小时数。谁能告诉我这是否是我 PC 的特定问题?

getting no error rather first line of code return 01 instead of 13.

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

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

因为 TimeSpan.FromHours(01).ToString() returns 01:00:00 as a string, Convert.ToDateTime 将此字符串解析为 13/01/2015 01:00:001.

24-hour clock 表示 01 将与其本身相同,无论您使用 hh 还是 HH 说明符。

在你的第二个例子中,你计算你的 TimeSpan 作为 Ticks and DateTime(Int64) constructor 01/01/0001 计算这次你的 DateTime 最终将是 01/01/0001 01:00:00 并且尽管如此,它的 24 小时制表示仍然是 01.

在您的第三个示例中,您正在使用 TimeOfDay property, that's why your DateTime will be 01.01.0001 15:10:36 (when I run your example right now) and it's hh:mm:ss tt representation will be 03:11:31 PM in InvariantCulture 调用 DateTime(Int64) 构造函数。

您的第四行抛出 FormatException because there is no standard or custom HH 格式说明符 TimeSpan.

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