1

コードまたは Windows GUI を介して自分で変更するまで、システム (windows7) のデフォルトの dateTime 形式をプログラムで永続的に変更/更新/設定する必要があります。

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 + "");
        }
    }
}
4

1 に答える 1

1

質問に記載されているレジストリ キーを手動で変更してみました。

これが私がしたことです:

  • Win+を押しRて「regedit」と入力し、レジストリ エディターを取得します。
  • ツリーを [コンピューター] → [HKEY_CURRENT_USER] → [コントロール パネル] → [インターナショナル] に移動しました。
  • 「sShortDate」エントリをダブルクリックし、値を「yyyy/MM/dd」に変更しました。

次に、Windows エクスプローラーを開くと、すべての日付が新しい形式で表示されたので、これは間違いなくレジストリ内の適切な場所です。

次に、レジストリを変更するために提供されたコードを試しましたが、エクスプローラーに表示される日付も変更されています。

したがって、これにより、Windows タスクバーの時計はこの設定の変更に反応しないと思われます。タスク マネージャーから「explorer.exe」を強制終了して再起動することで、これを確認しました。エクスプローラーを再起動すると、変更が有効になることも確認できます。


編集: .NET には、ロケール設定を直接設定するための機能がないようです。ただし、P/Invoke を使用して C++ Win API 経由で設定することはできます。これにより、システム クロック (および他のアプリケーション) に変更が通知されます。このディスカッションを参照してください。

于 2012-10-18T10:36:22.317 に答える