DateTime.now不响应时区更改

时间:2012-01-31 16:14:55

标签: c# datetime timezone

我使用DateTime.now构建时钟并从服务器接收时区。 问题是DateTime仍然使用旧的时区。

(我希望它在我收到的时候开始使用新的时区设置,而不必重新启动)

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您需要将当前时间转换为所需的时区。像这样:

var timeInServerTimezone = TimeZoneInfo.ConvertTime(DateTime.Now, timeZoneInfoReceivedFromServer);

答案 1 :(得分:1)

您必须在更改时间后清除时间现金。 使用以下命令:

TimeZoneInfo.ClearCachedData()

了解更多详情: http://www.c-sharpcorner.com/Forums/Thread/240283/datetime-is-not-reflected-instantly-when-time-zone-changes.aspx

答案 2 :(得分:0)

您是否尝试过使用TimeZone类而不是DateTime?我不确定它是否会有所作为,但值得一看。

 DateTime baseUTC = new DateTime( 2000, 1, 1 );
 TimeZone localZone = TimeZone.CurrentTimeZone;
 DateTime localTime = localZone.ToLocalTime( baseUTC );