我将信息存储在数据库中,并将我的POCO属性设置为DateTime.Now .
显示此值时,它将显示为PST时间 . 我希望它显示为GMT时间 .
我会做这样的事情来显示/存储它还是有更好的方法?
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("GMT");
var GMTTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, tz));
此外,它需要考虑夏令时,因为英国在一年中的不同时间改变其时钟而不是美国:
UPDATE: 我发现在TimeZone设置中你可以通过GMT标准时间或格林威治标准时间,这是第一次考虑到DST
3 回答
将其存储为UTC . 它专为与时区无关的时间而设计 .
给定的
DateTime
是否已经是UTC或本地时间由DateTime.Kind
确定 . 在序列化/反序列化DateTime
值时(例如从数据库中),您必须牢记这一点,因为这些信息通常不会被存储,当您收回DateTime
时,它大部分时间都会有值DateTimeKind.Unspecified
,这可能会导致问题转换方法 . 我只是确保在从持久数据存储中加载内容时强制DateTimeKind.Utc
.如果满足您的需求,那就是
DateTime.UtcNow
.看看DateTimeOffset .
我建议将DateTime属性更改为此类型
MSDN DateTime vs. DateTimeOffSet