-3
int tzO = TimeZone.CurrentTimeZone.IsDaylightSavingTime(DateTime.Now) ? -4 : -5; 

(これは 1 行のコードです。一部のブラウザでは 2 行に折り返されています。) なぜこのコードはうまくいかないのでしょうか?

4

2 に答える 2

1

なぜそれは吸うのですか?これはかなり主観的なものですが、いくつかのことをお伝えできます。

  • このTimeZoneクラスは非推奨です。古いものとしてマークされていませんが、MSDN ページTimeZoneInfoを含むすべてのガイダンスでは、代わりに使用するように指示されています。

  • 現在のタイム ゾーンを取得し、それを使用してオフセット値を手動で決定します。ハードコーディングした 2 つのうちの 1 つではなく、現在のタイムゾーンのオフセットの後だったと思う人もいるでしょう。

  • を渡すDateTime.Nowと、現地時間に依存しています。それは恐ろしいことではありませんが、夏時間の「フォールバック」移行のために、あいまいな時間参照を持つ可能性があります. UtcNow代わりに明示的に使用する方がよいでしょう。

  • 整数の整数時間を返しています。多くのタイム ゾーンでは 30 分のオフセットが使用されますが、まれに 45 分のオフセットがいくつかあります。代わりにa を使用する必要がありますTimeSpan

したがって、「吸う」ことのないこのコードのバージョンは次のようになります。

TimeSpan offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);
于 2013-04-16T23:04:58.003 に答える
0

を使用DateTime.UtcNow()して UTC 時刻を取得できます。

于 2013-04-16T22:44:49.803 に答える