【发布时间】:2012-09-08 23:05:21
【问题描述】:
我目前正在开发一个 c# 应用程序,并且正在使用一个纪元时间戳并将其转换回正常的日期和时间。这几乎是有效的,除了目前它返回的时间落后 1 小时,因为它没有考虑夏令时。如何确定用户是否处于夏令时的时区并根据需要更正时间。
感谢您提供的任何帮助。
【问题讨论】:
我目前正在开发一个 c# 应用程序,并且正在使用一个纪元时间戳并将其转换回正常的日期和时间。这几乎是有效的,除了目前它返回的时间落后 1 小时,因为它没有考虑夏令时。如何确定用户是否处于夏令时的时区并根据需要更正时间。
感谢您提供的任何帮助。
【问题讨论】:
您尚未指定如何从纪元时间戳转换为 DateTime,但纪元时间戳是自 1970-01-01 00:00:00 UTC 以来经过的秒数,因此我假设您有世界标准时间DateTime。您可以使用以下代码将其转换为考虑夏令时的本地时间戳:
var date = DateTime.UtcNow; // Should be created from epoch time stamp.
var localDate = date.ToLocalTime();
DateTime 的 Kind 不是 Local,这一点很重要。如果不是这样,您可以自己修改:
var date = DateTime.Now; // Should be created from epoch time stamp.
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
var localDate = date.ToLocalTime();
在 Windows 上,转换基于执行代码的当前用户的时区和夏令时设置。
【讨论】: