2012-10-18 81 views
1

我需要改變/更新/套我的系統(Windows7的)默認DateTime格式編程並永久直到我改變自己通過代碼,或者通過Windows GUI更改系統日期時間格式C#

我已經嘗試了很多這樣一個從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 + ""); 
     } 
    } 
} 
+0

看一看這個SO POST HTTP://計算器.com/questions/650849/change-system-date-programatically –

+0

Thanks @CodeIgnoto。但它是設置'日期',而不是'日期格式'或'日期時間格式'我認爲 – Sami

+0

嘗試System.IFormatProvider Interface.visit:http://www1.cs.columbia.edu/~lok/csharp/ refdocs/System/types/IFormatProvider.html – 2012-10-18 10:50:36

回答

1

我嘗試手動更改您的問題中提到的註冊表項。

這裏就是我所做的:

  • 按下 + [R並鍵入 'regedit',以獲得註冊表編輯器。
  • 導航樹到計算機→HKEY_CURRENT_USER→控制面板→國際。
  • 雙擊'sSortDate'條目並將值更改爲'yyyy/MM/dd'。

然後我打開Windows資源管理器,所有日期都以新格式顯示,所以這絕對是註冊表中的正確位置。

然後,我嘗試了您提供的代碼來修改註冊表,它也改變了Explorer中顯示的日期。

因此,這使我相信Windows任務欄時鐘不會對此設置的更改作出反應。我通過殺死並從任務管理器重新啓動'explorer.exe'來確認這一點。如果您重新啓動資源管理器,您也應該看到更改生效。


編輯:似乎沒有設施在.NET中直接設置區域設置。但是,您可以使用P/Invoke通過C++ Win API進行設置,這會導致系統時鐘(以及其他應用程序)收到更改通知。見this discussion

+0

@Sami:我很欣賞這個,這就是我去的原因在我的回答中解釋你所提供的代碼也在工作。嘗試重新啓動瀏覽器。 –

+0

對不起,我現在已經在某種程度上瞭解了你所說的。但我需要通過c#來完成這一切。沒有什麼與Windows GUI – Sami

+0

如果你可以請提供一些行來通過C#做你的告訴程序。我將不勝感激,它也將是一個完整而優秀的答案:) – Sami

1

你的代碼兩者都是罰款我已經測試了,你只需要重新啓動Explorer.exe的查看系統托盤中的日期時間格式的變化