我在调用 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?
最佳答案
尝试使用 DateTimeOffset.Now
而不是 DateTime.Now
。它将正确报告与 UTC 的偏移量 (DateTimeOffset.Now.Offset
)。
它不支持 DST,为此使用 TimeZoneInfo
。
您将不断遇到 DateTime
和任何与时区有关的问题。
关于c# - ASP.NET DateTime.Now 错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48120631/