0

現在、ac# アプリケーションに取り組んでおり、エポック タイム スタンプを使用して、通常の日付と時刻に変換しています。これは、夏時間を考慮していないため、現時点では1時間遅れて時間を返すことを除いて、ほとんど機能しています。ユーザーが夏時間のタイムゾーンにいるかどうかを確認し、必要に応じて時刻を修正するにはどうすればよいですか。

ご協力いただきありがとうございます。

4

1 に答える 1

4

エポック タイム スタンプから に変換する方法を指定していません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 では、コードを実行している現在のユーザーのタイムゾーンと夏時間の設定に基づいて変換が行われます。

于 2012-09-16T13:39:53.800 に答える