我需要更改/更新/设置我的系统(windows7)默认日期时间格式以编程方式并永久更改,直到我通过代码或通过Windows GUI自行更改
尝试了很多像这样的解决方案 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 + "");
}
}
}
答案 0 :(得分:1)
我尝试手动更改问题中提到的注册表项。
这就是我的所作所为:
然后我打开了Windows资源管理器,所有日期都以新格式显示,所以这绝对是注册表中的正确位置。
然后我尝试了你提供的代码来修改注册表,它也改变了资源管理器中显示的日期。
因此,这让我相信Windows任务栏时钟不会对此设置的更改做出反应。我通过从任务管理器中杀死并重新启动'explorer.exe'来确认这一点。如果重新启动资源管理器,您也应该看到更改生效。
编辑:.NET中似乎没有用于直接设置区域设置的工具。但是,您可以使用P / Invoke通过C ++ Win API进行设置,然后应该使系统时钟(和其他应用程序)得到更改通知。请参阅this discussion。