3

DateTime オブジェクトの RFC-1123 形式の日付を取得すると、現在の現地時間が表示されますが、タイムゾーンは GMT になります (これは不正確です)。
DateTime.Now.ToString("r");
戻り値
Fri, 12 Feb 2010 16:23:03 GMT

午後 4 時 23 分ですが、私のタイムゾーンは UTC+10 です (さらに、現在は夏時間を観察しています)。

これで、最初に UTC に変換することで「正しい」戻り値を取得でき
DateTime.UtcNow.ToString("r");
ます。
Fri, 12 Feb 2010 05:23:03 GMT

ただし、理想的には、適切なタイムゾーンを取得したいと思います。
Fri, 12 Feb 2010 16:23:03 +1100

現在の CultureInfo を渡しても何も変わりません。TimeZoneInfo.Local.GetUtcOffset(...) で UTC オフセットを取得し、そこからタイムゾーン文字列をフォーマットできますが、GMT ビットを取り除いて置き換えるのは面倒です。

正しいタイムゾーンを強制的に含める方法はありますか?

4

2 に答える 2

4

.NET 実装は、実際の日付の時間オフセットに関係なく、結果を常に GMT であるかのように表現します。

MSDN - The RFC1123 ("R", "r") Format Specifierに示されてDateTime.Now.ToString("r");いるString.Format("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'", DateTime.Now);ように、これは .NET RFC1123 フォーマット文字列です。

必要な動作を得るには、おそらく を使用String.Formatし、指定子の固定 'GMT' セクションを時間オフセット指定子に置き換える必要があります。

于 2010-06-10T18:24:27.897 に答える
4

あなたはちょうど行うことができDateTime.UtcNow.ToString ("R")ます.GMTタイムゾーンを取得しますが、時間は正しくオフセットされます.

于 2012-09-18T06:38:10.707 に答える