获取用户指定的系统短时间格式(非系统文化)

Get User Specified System Short Time Format (Not System Culture)

更新:系统的文化在应用程序的另一部分被硬编码,这就是为什么我得到正确但错误的结果。


我想获取系统的短时间格式,它可能与系统文化的短时间格式不同。

我需要将系统的短时间格式应用于 Winforms 中的 DateTimePicker 控件。

目前,这是我拥有的代码,它让我在短时间内获得系统文化,不是我想要的:

// `CurrentCulture` returns "{en-US}"
// `ShortTimePattern` returns "h:mm tt"
dtpTime.CustomFormat = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern;
dtpTime.Format = DateTimePickerFormat.Custom;

例如,我的系统设置为美国文化,但我的系统短时间设置为24 小时 格式。怎样才能得到系统的短时间而不是系统文化的短时间?

如有任何帮助或指导,我们将不胜感激。


用户可以通过转到 Start >> Date & Time Settings >>[=44= 来修改他们的日期和时间格式] Date, Time, & Regional Formatting >> Change Data Format

请注意,短时间设置为 24 小时格式。

CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern(和ShortDatePattern将匹配您的Windows'区域短时间和短日期设置。

这是我的电脑...

  • 我的 CurrentCultureen-GB ("English (United Kingdom)"),它有一个默认的短日期模式 dd/MM/yyyy 和一个默认的短时间模式共 HH:mm.

  • 我已将短日期模式覆盖为 yyyy-MM-dd,将短时间模式覆盖为 hh:mm tt。您可以在左侧的区域控制面板屏幕截图中看到这一点。

  • 您可以在 LinqPad window 中看到 CultureInfo.Currentculture.DateTimeFormatShortTimePatternShortDatePattern 匹配我当前的 Windows 区域设置。

  • 如果您使用的是 CurrentCulture 并且格式与区域控制面板不匹配,您可能需要重新启动应用程序。我不相信 CurrentCulture 会在系统设置更改时可靠地自行刷新。