4

このコードがある場合:

                DateTime dt = DateTime.UtcNow;
                string sDate = dt.ToString("yyyy-MM-dd HH:mm:ss.fff zz");

私のsDateは次のようになります:

"2013-04-07 21:05:15.396 +10"

これは現在の UTC 日時 (午後 9 時 5 分) ですが、末尾に「+10」があり、これが私のローカル タイムゾーンです。

私はこれを期待していたでしょう:

"2013-04-07 21:05:15.396 +00"

どうしたの?

4

2 に答える 2

5

これは、ドキュメントに次のように記載されているためです(強調は私のものです):

値のDateTime場合、「zz」カスタム書式指定子は、UTC からのローカル オペレーティング システムのタイム ゾーンの符号付きオフセットを時間単位で表します。インスタンスの DateTimeKindプロパティの値は反映されません。このため、"zz" 書式指定子をDateTime値に使用することはお勧めしません。

そのため、zzフォーマット指定子は、UTC 時刻のフォーマットに使用されている場合でも、常にローカル タイムゾーンの UTC オフセットを出力します。

于 2013-04-07T21:17:28.107 に答える
0

DateTime.ToStringに a を渡さない場合CultureInfo、デフォルトで現在のカルチャが使用されます。現在の文化が +10 である場合、+10 が表示される理由はそれで説明できます。ToStringさまざまな FxCop およびコード分析ルールがあり、有効にしないで呼び出したときに警告することができます。CultureInfo

于 2013-04-07T21:15:57.103 に答える