Jon的答案是有关TimeZone的,但我建议改用TimeZoneInfo。
我个人喜欢尽可能将内容保存在UTC中(至少在过去;将UTC存储在 将来会
存在潜在的问题),所以我建议采用这样的结构:
public struct DateTimeWithZone{ private readonly DateTime utcDateTime; private readonly TimeZoneInfo timeZone; public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone) { var dateTimeUnspec = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTimeUnspec, timeZone); this.timeZone = timeZone; } public DateTime UniversalTime { get { return utcDateTime; } } public TimeZoneInfo TimeZone { get { return timeZone; } } public DateTime LocalTime { get { return TimeZoneInfo.ConvertTime(utcDateTime, timeZone); } } }您可能希望将“ TimeZone”名称更改为“ TimeZoneInfo”,以使事情更清楚-我更喜欢简短的名称。



