に UTC 値が含まれていることがわかっている場合は、次を使用できます。DateTime
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
たとえば、現在のアプリケーションでは、SQL を使用してデータベースにタイムスタンプを作成しますutcnow
が、それらを C# アプリケーションにKind
読み込むと、プロパティは常にになりUnknown
ます。タイムスタンプを読み取り、故意に に設定し、それを現地時間に変換するラッパー関数を作成しましたKind
。Utc
基本的には上記のとおりです。
DateTime.ToLocalTime()
次のいずれか (または両方) が当てはまる場合にのみ値に影響しないことに注意してください。
- の
DateTime
プロパティKind
はDateTimeKind.Local
- あなたのローカルタイムゾーンは、「変更なし」が正しい変換であるようです
2 番目の点は正しくないと推測できると思います。したがって、iKnowThisIsUtc
のKind
プロパティはLocal
既に設定されているようです。DateTime
これらの s を提供しているものがローカルであると考える理由を理解する必要があります。