I持っている彼らの地理的位置のオフセットGMTを使用して、ユーザーの入力からUTC DateTime
を作成する方法:.NET:夏時間の会計
public static DateTime LocalToUtc
(int year, int month, int day, int hour, decimal gmtOffset) {
// argument validation here
var dateTime = new DateTime(year, month, day).AddHours(hour);
var dateTimeOffset =
new DateTimeOffset(dateTime, TimeSpan.FromHours(gmtOffset));
return dateTimeOffset.UtcDateTime;
}
問題は、この関数は時間でオフになっていることですユーザーのタイムゾーンで夏時間が節約されている場合。
個人的なGMTオフセットは-8ですが、現在のタイムゾーンオフセットは夏時間のため-7です。
夏時間を考慮して上記の関数を変更するにはどうすればよいですか? GMTオフセットからタイムゾーンオブジェクトを作成し、タイムゾーンオフセットを取得する必要がありますか?
異なるタイムゾーンで値を比較すると、DateTimeがバグです。 UTCの種類Localがまったく設定されていないときは、特に迷惑です。 – GregC
@GregC - いいえ、バグではありません。 DateTimeに正しいローカルタイム情報が設定されているかどうかは必ずしも確かではありません。そのため、比較を行うためにUTCに変換します。 –
@Mystere Man、GregCは正しく、DateTime構造体は異なるタイムゾーンを扱うのには適していません。これは、なぜDateTimeOffset構造体が導入されたのかです。 –