如何在C#中将时间格式改为24小时制?

6
    Literal four = new Literal();
    string timeanddate;
    timeanddate = DateTime.UtcNow.ToString();
    DateTime dt = new DateTime();
    DateTime dt_calc = new DateTime();
    dt = Convert.ToDateTime(timeanddate);
    dt_calc = dt.AddHours(3);
    four.Text = "3hr added and this gives>>  " +  dt_calc.ToString();
    form1.Controls.Add(four);

这段文本涉及到 AM PM 时间格式,但我希望使用 24 小时制。

4个回答

16

请看此页面,了解您可能需要的各种 DateTime 格式。

请注意,使用 "HH" 来表示24小时制时间。

例如,如果您想要格式为 "23:00:00" 而不是 "11:00:00 PM",您应该使用:

string formatted = dt_calc.ToString("HH:mm:ss");

顺便说一句,你使用 new DateTime() 初始化你的 DateTime 值是不必要的。


好的,但是有没有办法使24小时成为默认值,也就是说,如果我不想使用任何格式选项,那么返回的默认值应该是24小时。 - user287745
@user287745:有!首先请看 jgauffin 的回答;然后,如需更多信息,请查看:CurrentCultureDateTimeFormatInfo - Dan Tao

2

您需要更改当前的文化。

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(1053);
string swedishTime = DateTime.Now.ToShortTimeString(); //24h format

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(1033);
string englishTime = DateTime.Now.ToShortTimeString(); //am/pm format

听起来这将是整个应用程序的更改。如果您想要为每个已登录的用户执行此操作怎么办?例如,基于“Accept”标头,因此它是基于区域设置的? - Wouter
这确实是系统范围内的操作,通常在桌面应用程序中完成。对于基于Web的应用程序,我只会以文化不变格式提供UTC日期/时间。让前端格式化并转换为本地时间。 - jgauffin

1
    System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern = "HH:mm:ss"

1
虽然这段代码片段可能解决了问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议原因。请尽量不要在代码中添加过多的解释性注释,这会降低代码和解释的可读性! - kayess

0

旧文章,但这是来自上面使用字符串插值的语法:

string formatted = $"{dt_calc:HH:mm:ss}";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接