更改系统日期时间格式c#

时间:2012-10-18 10:04:50

标签: c# winforms datetime datetime-format

我需要更改/更新/设置我的系统(windows7)默认日期时间格式以编程方式并永久更改,直到我通过代码或通过Windows GUI自行更改

我在Code Project

尝试了很多像这样的解决方案
       Console.Write(DateTime.Now + "");
       RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@"
       Control Panel\International", true);
        rkey.SetValue("sShortDate", "dd/MM/yyyy");
        rkey.SetValue("sLongDate", "dd/MM/yyyy");
       Console.Write(DateTime.Now + "");

最接近并且得名的答案来自Set Default DateTime Format c#,我尝试了这个解决方案,但它没有帮助我。因为它不会更改我的系统日期时间格式(显示在任务栏中)。在我重新启动具有此代码的应用程序后,在执行此代码之前,我再次获取旧格式。

using System;
using System.Globalization;
using System.Threading;

namespace test 
{
    public static class Program
    {
        public static void Main() {
          Console.Write(DateTime.Now + "");// MessageBox.Show(DateTime.Now + "");
          CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
          culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
          culture.DateTimeFormat.LongTimePattern = "";
          Thread.CurrentThread.CurrentCulture = culture;
          Console.Write(DateTime.Now + "");// MessageBox.Show(DateTime.Now + "");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我尝试手动更改问题中提到的注册表项。

这就是我的所作所为:

  • + R 并输入'regedit'以获取注册表编辑器。
  • 将树导航至计算机→HKEY_CURRENT_USER→控制面板→国际。
  • 双击'sShortDate'条目并将值更改为'yyyy / MM / dd'。

然后我打开了Windows资源管理器,所有日期都以新格式显示,所以这绝对是注册表中的正确位置。

然后我尝试了你提供的代码来修改注册表,它也改变了资源管理器中显示的日期。

因此,这让我相信Windows任务栏时钟不会对此设置的更改做出反应。我通过从任务管理器中杀死并重新启动'explorer.exe'来确认这一点。如果重新启动资源管理器,您也应该看到更改生效。


编辑:.NET中似乎没有用于直接设置区域设置的工具。但是,您可以使用P / Invoke通过C ++ Win API进行设置,然后应该使系统时钟(和其他应用程序)得到更改通知。请参阅this discussion