我在Web MVC项目中处理日期时遇到了麻烦。它在我的本地IIS中运行。 问题是,我住在巴西,里约热内卢,所以根据a this我的TimeZone是
E. South America Standard Time
这意味着巴西利亚的GMT-3。它是完美和正确的。
但是当在NCrunch中运行我的单元测试时,对于上面的代码:
System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
var zone = TimeZone.CurrentTimeZone;
var time = zone.GetDaylightChanges(DateTime.Today.Year);
var start = time.Start;
var end = time.End;
var offset = zone.GetUtcOffset(DateTime.Now);
我收到以下结果:
zone.DaylightName = "E. South America Daylight Time" (CORRECT)
time.Start = {18/10/2014 23:59:59} (CORRECT FOR 2014)
time.End = {15/02/2014 23:59:59} (CORRECT FOR 2014)
offset = {-2:00:00} (WRONT, it is -3) -> it would be right if there was no daylight saving time
TimeZone.IsDaylightSavingTime(DateTime.Now) = true
问题在于,当我将其发送到Postgres DB时,它会保存为timestampZ,因此可以保存正确的
for example 01/01/01 01:01:01 -3
但是当从数据库中检索时,出现了错误,因为我得到了错误的偏移
01/01/01 02:01:01 -3
它在本地IIS中运行但它应该使用本地计算机时间,对吗?如果我去我的电脑设置是正确的(巴西利亚时间,GMT-3)
我该怎么办?
谢谢你,
修改
实际上问题出在我的PostgresSQL中。它用偏移-3而不是-2来保存当前时间,这就是问题所在。当我把它拿回服务器时它增加了一个小时......
如何在Postgres中启用DST?!?