C# 获取用户指定的系统短时格式(非系统区域性)
更新:应用程序的另一部分对系统的文化进行了硬编码,这就是为什么我得到了正确但错误的结果C# 获取用户指定的系统短时格式(非系统区域性),c#,winforms,datetime,datetimepicker,datetime-format,C#,Winforms,Datetime,Datetimepicker,Datetime Format,更新:应用程序的另一部分对系统的文化进行了硬编码,这就是为什么我得到了正确但错误的结果 我想得到系统的短时格式,它可以不同于系统文化的短时格式 我需要将系统的短时间格式应用于Winforms中的DateTimePicker控件 目前,这是我拥有的代码,它为我提供了短时间的系统文化,而不是我想要的: // `CurrentCulture` returns "{en-US}" // `ShortTimePattern` returns "h:mm tt" d
我想得到系统的短时格式,它可以不同于系统文化的短时格式 我需要将系统的短时间格式应用于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小时格式。如何获得系统的短时间而不是系统文化的短时间
在此方面的任何帮助或指导都将不胜感激
用户可以通过转到
开始
>日期和时间设置
日期、时间和区域格式
更改数据格式
请注意,短时间设置为24小时格式。
(和ShortDatePattern
)将与您的Windows区域短时间和短日期设置相匹配
这是我的电脑
- 我的
是CurrentCulture
(“英语(英国)”),它的默认短日期模式为en GB
,默认短时间模式为dd/MM/yyyy
HH:MM
- 我已将短日期模式覆盖为
,将短时间模式覆盖为yyyy-MM-dd
。您可以在左侧的区域控制面板屏幕截图中看到这一点hh:MM-tt
- 您可以在LinqPad窗口中看到
的CultureInfo.Currentculture.DateTimeFormat
和ShortTimePattern
与我当前的Windows区域设置相匹配ShortDatePattern
- 如果使用的是
,且格式与区域控制面板不匹配,则可能需要重新启动应用程序。我不相信只要系统设置发生变化,CurrentCulture
就会可靠地自我刷新CurrentCulture
CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern
(和ShortDatePattern
)将匹配您的Windows区域短时间和短日期设置
这是我的电脑
- 我的
是CurrentCulture
(“英语(英国)”),它的默认短日期模式为en GB
,默认短时间模式为dd/MM/yyyy
HH:MM
- 我已将短日期模式覆盖为
,将短时间模式覆盖为yyyy-MM-dd
。您可以在左侧的区域控制面板屏幕截图中看到这一点hh:MM-tt
- 您可以在LinqPad窗口中看到
的CultureInfo.Currentculture.DateTimeFormat
和ShortTimePattern
与我当前的Windows区域设置相匹配ShortDatePattern
- 如果使用的是
,且格式与区域控制面板不匹配,则可能需要重新启动应用程序。我不相信只要系统设置发生变化,CurrentCulture
就会可靠地自我刷新CurrentCulture
我建议添加屏幕截图,显示您在操作系统中设置区域性和系统短时间的位置,因为这可能会使问题更易于可视化。请在您的问题中分享
system.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern
的当前值,以及这是否是你所期望的。请在即时窗口中检查它
-不要猜。你说的“系统格式”是什么意思?没有这样的事情。@mjwills我添加了ShortTimePattern
call的返回值;CurrentCulture
设置为{en US}@Dai我正在寻找用户输入/指定的短时格式。这是用户可以在其Windows系统中修改的设置;我建议添加屏幕截图,显示您在操作系统中设置区域性和系统短时间的位置,因为这可能会使问题更易于可视化。请在您的问题中分享system.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern
的当前值,以及这是否是你所期望的。请在即时窗口中检查它
-不要猜。你说的“系统格式”是什么意思?没有这样的事情。@mjwills我添加了ShortTimePattern
call的返回值;CurrentCulture
设置为{en US}@Dai我正在寻找用户输入/指定的短时格式。这是用户可以在其Windows系统中修改的设置;谢谢你的回答,但我正在寻找用户指定的短日期设置。我将在我的问题中添加一个屏幕截图来帮助解释。@Marwanمو㶋ن我已经更新了我的答案,显示了ShortDateFormat
和ShortTimeFormat
。对不起,我的回答有误,我应该键入shorttime format@Marwanمو㶋ن请发布您的区域控制面板(而不是新的“设置应用程序”)的屏幕截图和Regedit查看HKEY_CURRENT_USER\control panel\International
的屏幕截图在阅读了您的评论和上述答案后,我决定查看代码的另一部分是否覆盖了区域性设置,的确如此。所以这是一个比我想象的更大的问题。请不要问我为什么文化设置被硬编码。。。叹息。。。很抱歉一旦我了解我们的应用程序为什么会这样做,我会尽快回复。谢谢你的帮助。谢谢你的回答,但是我