在IIS或web.config中设置不同的时区
本文关键字:时区 设置 IIS web config | 更新日期: 2023-09-27 18:23:47
我在的许多地方记录时间
If Request.DynamicSettings.AirlineSettings.AirlineGeneralSettings.TimeLogEnabled Then
StartTime = DateTime.Now
LogTime(Reflection.MethodBase.GetCurrentMethod.DeclaringType.FullName, Reflection.MethodBase.GetCurrentMethod.Name, StartTime, DateTime.Now, "AB-SCR(I)", 0,)
End If
我用过的所有地方
DateTime.Now
我现在面临一个问题,我目前在海湾服务器上托管,GMT+4:00我需要在Gmt+3Gmt为另一个国家主持同样的项目对于这个主机,我需要时间使用该国家的当地时间登录。
有没有什么方法可以做到这一点,而不必修改我代码的每一行。
我在asp.net上看过这篇文章timzone,但由于我的服务已经启动,我有很多代码需要更改,我正在寻找一个更简单的解决方案。
谢谢。
几件事:
-
无法在IIS配置或web.config中更改时区。这不是IIS问题,而是应用程序代码中的问题。
-
DateTime.Now
不应用于服务器端应用程序,例如ASP.Net web应用程序。阅读针对DateTime.Now.的案例 -
如果您只是在计算某个程序运行所需的时间,那么根本不要使用
DateTime
。相反,请使用System.Diagnostics.Stopwatch
。Stopwatch sw = Stopwatch.StartNew(); // ...do some work ... sw.Stop(); TimeSpan elapsed = sw.Elapsed; // how long it took will be in the Elapsed property
-
如果您确实希望当前时间位于特定时区,那么您需要知道时区标识符。(GMT+4和GMT+3不是时区,而是时区偏移量请参阅时区标记wiki中的"时区!=偏移量"。)您可以使用
TimeZoneInfo.GetSystemTimeZones()
或在命令行上调用tzutil /l
来查看Windows时区列表。然后在您的应用程序中:
string tz = "Arabian Standard Time"; DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
您可能应该重构代码,以便在
LogTime
方法中完成这项工作。然后,您将只有一个地方可以为您的申请设置时区。