0

DateTime.UtcNow.ToLongTimeString()現在の時刻文字列を取得するために使用します。

ただし、動作が奇妙で、時間を返す場合もあれば、3:10:00(03:10:00先頭のゼロ) を返す場合もあります。なぜこれが起こるのですか?

アプリケーションの起動時に文化を設定しました

Thread.CurrentThread.CurrentCulture = new CultureInfo(...);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(...);

そして、時間文字列の異なる結果は、タスクからのものです (私が今見ることができるものから)。だから私はタスクを作成し、.Wait()それを終了させます。タスク内では、時間は異なる方法で文字列に変換されます。

アップデート

興味のある方のために、私が見つけたいくつかの役立つ読み物を次に示します。

アプリケーション全体のカルチャを設定する方法はありますか? すべての現在のスレッドと新しいスレッド?
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture.aspx

4

1 に答える 1

1

ただし、動作が奇妙で、3:10:00 のような時間を返すこともあれば、03:10:00 (先行ゼロ) のような時間を返すこともあります。

これがどこで発生するかについては何も言われていませんが、異なる文化を使用している場合は確実に発生する可能性があります. 通常、先行ゼロがなければ、午前/午後指定子も表示されると思います。

一貫した結果が必要な場合は、常に同じカルチャを指定します (例: CultureInfo.InvariantCulture)。

もちろん、これがカルチャ設定を変更せずにすべて同じシステム上にある場合、それは別の問題です。

于 2012-12-14T06:55:52.867 に答える