在 IIS 或 web.config 中设置不同的时区
Setting different time zone in IIS or web.config
我在很多地方记录时间
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
我现在遇到一个问题,
我目前在海湾服务器中托管它,格林威治标准时间 +4:00
我需要在 Gmt +3Gmt 为另一个国家举办同一个项目
对于此托管,我需要使用该国家/地区的本地时间来记录时间。
有什么方法可以做到这一点,而不必修改我的每一行代码。
我看过这篇文章timzone with asp.net,但由于我的服务已经启动,我有很多代码需要更改,我正在寻找更简单的解决方案。
谢谢。
几件事:
您不能在 IIS 配置或 web.config 中更改时区。这不是 IIS 问题,而是您的应用程序代码中的问题。
DateTime.Now
永远不应在服务器端应用程序中使用,例如 ASP.Net 网络应用程序。阅读 The case against 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 不是时区,而是 时区偏移量 参见 the timezone tag wiki 中的 "Time Zone != Offset"。)你可以看到 Windows 个时区,方法是使用 TimeZoneInfo.GetSystemTimeZones()
,或在命令行上调用 tzutil /l
。
那么在你的申请中:
string tz = "Arabian Standard Time";
DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
您可能应该重构您的代码,以便在您的 LogTime
方法中完成。那么您将只有一个地方可以为您的应用程序设置时区。
我在很多地方记录时间
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
我现在遇到一个问题, 我目前在海湾服务器中托管它,格林威治标准时间 +4:00 我需要在 Gmt +3Gmt 为另一个国家举办同一个项目 对于此托管,我需要使用该国家/地区的本地时间来记录时间。
有什么方法可以做到这一点,而不必修改我的每一行代码。
我看过这篇文章timzone with asp.net,但由于我的服务已经启动,我有很多代码需要更改,我正在寻找更简单的解决方案。
谢谢。
几件事:
您不能在 IIS 配置或 web.config 中更改时区。这不是 IIS 问题,而是您的应用程序代码中的问题。
DateTime.Now
永远不应在服务器端应用程序中使用,例如 ASP.Net 网络应用程序。阅读 The case against 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 不是时区,而是 时区偏移量 参见 the timezone tag wiki 中的 "Time Zone != Offset"。)你可以看到 Windows 个时区,方法是使用
TimeZoneInfo.GetSystemTimeZones()
,或在命令行上调用tzutil /l
。那么在你的申请中:
string tz = "Arabian Standard Time"; DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
您可能应该重构您的代码,以便在您的
LogTime
方法中完成。那么您将只有一个地方可以为您的应用程序设置时区。