ASP.NET 日期时间,现在是错误的时间



调用DateTime时我遇到了一个奇怪的结果。因此,我执行了以下.apsx并在服务器上执行。

<%@ Import Namespace="System.Globalization.CultureInfo" %>
<%
    System.Globalization.CultureInfo.CurrentCulture.ClearCachedData() 
%>
<%= DateTime.UtcNow %>
<br>
<%= DateTime.Now %>
<br>
<%= TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now) %>
<br>
<%= DateTime.Now.IsDaylightSavingTime() %>
<br>
<%= TimeZone.CurrentTimeZone.StandardName %>
<br>
<%= TimeZone.CurrentTimeZone.DaylightName %>
<br>
<%= TimeZoneInfo.Local.Id %>

结果如下:

10/01/2018 13:32:58 
10/01/2018 10:32:58 
-02:00:00 
False 
E. South America Standard Time 
E. South America Daylight Time 
E. South America Standard Time

为什么 DateTime.Now 返回 -03:00:00 而不是 -02:00:00 时间?为什么 IsDaylightSavingTime 返回 false,但它应该是 True?

尝试DateTimeOffset.Now而不是DateTime.Now。它将正确报告 UTC 的偏移量 ( DateTimeOffset.Now.Offset (。

它不是 DST 感知的,请使用TimeZoneInfo

您将继续遇到有关时区DateTime和任何有关时区的陷阱。

最新更新