Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取用户指定的系统短时格式(非系统区域性)_C#_Winforms_Datetime_Datetimepicker_Datetime Format - Fatal编程技术网

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
    ShortDatePattern
    与我当前的Windows区域设置相匹配

  • 如果使用的是
    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
    ShortDatePattern
    与我当前的Windows区域设置相匹配

  • 如果使用的是
    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
的屏幕截图在阅读了您的评论和上述答案后,我决定查看代码的另一部分是否覆盖了区域性设置,的确如此。所以这是一个比我想象的更大的问题。请不要问我为什么文化设置被硬编码。。。叹息。。。很抱歉一旦我了解我们的应用程序为什么会这样做,我会尽快回复。谢谢你的帮助。谢谢你的回答,但是我