現在、ac# アプリケーションに取り組んでおり、エポック タイム スタンプを使用して、通常の日付と時刻に変換しています。これは、夏時間を考慮していないため、現時点では1時間遅れて時間を返すことを除いて、ほとんど機能しています。ユーザーが夏時間のタイムゾーンにいるかどうかを確認し、必要に応じて時刻を修正するにはどうすればよいですか。
ご協力いただきありがとうございます。
エポック タイム スタンプから に変換する方法を指定していませんDateTime
が、エポック タイム スタンプは 1970-01-01 00:00:00 UTC から経過した秒数であるため、 UTC があると仮定しますDateTime
。次のコードを使用して、これを夏時間を考慮したローカル タイム スタンプに変換できます。
var date = DateTime.UtcNow; // Should be created from epoch time stamp.
var localDate = date.ToLocalTime();
Kind
の が でDateTime
はないことが重要ですLocal
。そうでない場合は、自分で変更できます。
var date = DateTime.Now; // Should be created from epoch time stamp.
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
var localDate = date.ToLocalTime();
Windows では、コードを実行している現在のユーザーのタイムゾーンと夏時間の設定に基づいて変換が行われます。