1

テスト用のイタリアのマシンからこのコンソール アプリを実行すると、次のようになります。

static void Main(string[] args)
    {
        String date = DateTime.Now.ToString("yyyy-MM-dd HH:mm", new CultureInfo("it-IT"));
        Console.WriteLine(date);
        Console.ReadKey();
        CultureInfo ci = new CultureInfo("it-IT");
                Console.WriteLine("Time: " + ci.Name + " " + ci.DateTimeFormat.TimeSeparator);
                Console.WriteLine("Date: " + ci.Name + " " + ci.DateTimeFormat.DateSeparator);
        Console.ReadKey();
    }

表示:

2013-07-25 15:40 時間: it-IT : 日付: it-It /

しかし、米国のサーバーからこのコードを実行すると:

2013-07-25 15.40 時間: it-IT . 日付: it-It /

時間部分のフォーマットセパレータが異なるのはなぜですか? イタリア語の正しいものは:

4

3 に答える 3

2

イタリア語の時分割のデータが Windows のバージョン間で変更されていることに気付きました (コロンは最新バージョンです)。これは、データを改善しているため予想されます。マシン間でのデータ転送が原因でこれが見つかった場合は、データ変更の影響を受けない標準の不変形式 (ISO 8601 など) を使用する必要があります。

于 2013-09-24T18:19:29.087 に答える
1

私はちょうどこの問題に遭遇します。問題はユーザーのオーバーライドがあるためだと思うことがあります。

次を使用して CultureInfo をロードすることをお勧めします。

CultureInfo ci = new CultureInfo("それ-IT", false);

useUserOverrideすべてのユーザー設定をバイパスするには、パラメーター forceとして false を指定します。

いずれにせよ、Win8 と Win7 の間で変更があります。以下のコードを実行します (.NET 4.5):

CultureInfo ci = new CultureInfo("it-IT", false);

String date = DateTime.Now.ToString(ci);
Console.WriteLine(date);
Console.WriteLine("Time Separator: " + ci.DateTimeFormat.TimeSeparator);
Console.WriteLine("Date Separaotr: " + ci.DateTimeFormat.DateSeparator);
Console.ReadKey();

Win 7 の場合:

29/10/2013 14:12:33
Time Separator: :
Date Separaotr: /

Win 8 で実行すると、次のようになります。

29/10/2013 15.08.43
Time Separator: .
Date Separaotr: /
于 2013-10-29T14:13:01.750 に答える
-1

交換

    ci.DateTimeFormat.TimeSeparator

    DateTimeFormatInfo.CurrentInfo.TimeSeparator;
于 2013-08-14T16:46:46.343 に答える