具有无效偏移postgres的时区

时间:2014-12-21 14:34:24

标签: c# postgresql timezone offset dst

我在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?!?

0 个答案:

没有答案