ASP.NET DateTime.Now错误的时间

时间:2018-01-05 20:12:07

标签: c# asp.net datetime

调用DateTime.Now时,我得到一个奇怪的结果 所以,我做了以下.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?

1 个答案:

答案 0 :(得分:0)

尝试使用DateTimeOffset.Now代替DateTime.Now。它将正确报告UTC的偏移量(DateTimeOffset.Now.Offset)。

它不支持DST,请使用TimeZoneInfo

您将继续使用DateTime以及任何与时区有关的问题。