如何更改asp.net应用程序的时区

我需要为我的ASP.NET设置默认时区到亚洲/达卡或GMT + 6时区。 但我找不到全球改变它的方法。 Stackoverflow和Web的其余部分有很多参考,通过获取时区信息并计算每次需要DateTime对象的正确时间。

但请相信我,我不想这样做。 所以不要给我这样的建议。 我想将时区设置为亚洲/达卡或GMT + 6,最好是从web.config。 (类似我们在php中使用php.ini)所以每次我需要DateTime对象时,无论时区对于服务器是什么时间都用我的时区进行评估。

这可能吗? 如果可能的话怎么样? 在此先感谢解决方案:)

抱歉,.NET无法在全局范围内更改时区。

唯一的方法是更改​​服务器的时区或重写所有代码。

最佳做法是完全不依赖于系统时区(从不使用DateTime.Now)。

您应该将所有日期作为Utc日期处理,然后在向用户显示时转换为特定区域。

即使您设法在ASP.NET应用程序中处理时区,SQL Server上仍然存在时区,例如GETTIMEfunction。 如果您的应用程序完全用UTC编写,那么您的SQL服务器function也将起作用。

您可以更改TimeZone …并获取日期

  DateTime utcTime = DateTime.UtcNow; TimeZoneInfo myZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); Str.Append(custDateTime.ToString()); 

我的指令有问题:

 TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 

所以……我创建了一个个人的TimeZoneInfo。

我的代码……

 public static DateTime DateNow() { DateTime utcTime = DateTime.UtcNow; TimeZoneInfo myZone = TimeZoneInfo.CreateCustomTimeZone("COLOMBIA", new TimeSpan(-5, 0, 0), "Colombia", "Colombia"); DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); return custDateTime; } 

这是非常简单的方法。 只需获取当前的UTC时间和时区即可。 将UTC转换为您的时区。 这是你如何做到的。

 DateTime date1 = DateTime.UtcNow; TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Pakistan Standard Time"); DateTime date2 = TimeZoneInfo.ConvertTime(date1, tz); 

在tz中设置您的时区,然后在任何地方使用“date2”。