.net文化特定的12/24小时格式

Tra*_*den 4 c# wpf datetime cultureinfo

有没有办法保持文化特定的日期时间格式,但强制12/24小时渲染?我知道我可以用实际的日期/时间格式字符串做很多事情HH:mm:ss ,hh:mm:ss但我想尊重当前的用户文化格式(即mm/dd/yyyyyyyy/mm/dd等),只需强制12/24小时的时间渲染.

McK*_*Kay 10

我可能会这样做:

        var culture = CultureInfo.CurrentCulture;
        var pattern = culture.DateTimeFormat.LongTimePattern; // or pick which one you want to use;
        var newPattern = pattern.Replace("h", "H").Replace("t", "");
        DateTime.Now.ToString(newPattern); // or use whatever DateTime you want to use
Run Code Online (Sandbox Code Playgroud)

从聊天:

以下列出了所有文化的长时间模式字符串,以及如何修改它们:

Old: hh:mm:ss tt New: HH:mm:ss 
Old: HH:mm:ss '?.' New: HH:mm:ss '?.'
Old: HH:mm:ss New: HH:mm:ss
Old: H:mm:ss New: H:mm:ss
Old: h:mm:ss tt New: H:mm:ss 
Old: tt h:mm:ss New:  H:mm:ss
Old: h:mm:ss.tt New: H:mm:ss.
Old: HH.mm.ss New: HH.mm.ss
Old: tt hh:mm:ss New:  HH:mm:ss
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记在替换后添加`Trim()`以避免在删除"tt"后留下的前导和尾随空格. (2认同)

Joe*_*Joe 5

您可以使用自定义日期/时间格式字符串 - 例如:

12小时渲染:

DateTime.Now.ToString("hh:mm:ss tt");
Run Code Online (Sandbox Code Playgroud)

24小时渲染:

DateTime.Now.ToString("HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

要与当前文化中的日期格式结合使用,您可以使用以下方法之一:

DateTime.Now.ToString("d") + DateTime.Now.ToString(" hh:mm:ss tt");
DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + 
                                      " hh:mm:ss tt");
Run Code Online (Sandbox Code Playgroud)