在C#中转换时区之间的时间

时间:2016-10-23 07:10:26

标签: c# timezone

我有一个托管在远程服务器上的C#MVC Web应用程序。我不知道确切的位置。

该应用程序的用户全部来自(UTC + 06.00)达卡。当用户插入新记录时,我希望从当地时间e.i(UTC + 06.00)达卡插入日期时间。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

以下代码解决了我的问题 -

DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo BdZone = TimeZoneInfo.FindSystemTimeZoneById("Bangladesh Standard Time");
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, BdZone);

答案 1 :(得分:1)

您可以按照以下方法:

第1步: 您可以将UTC时间存储在数据库中。如果您使用的是SQL,则可以使用GETUTCDATE()获取UTC日期。

第2步

请使用Javascript设置cookie,存储浏览器时区。 (您可以使用jsTimeZoneDetect之类的脚本来获取时区名称)

第3步

后端C#代码:

  1. 从cookie中提取时区。

  2. 从数据库中获取插入的utcTime并存储在本地变量中(utcTime是我使用的局部变量名称。)

  3. 使用下面提到的代码将UTC时间转换为当地时间。

    TimeZoneInfo tzoneinfo = TimeZoneInfo.FindSystemTimeZoneById("浏览器时区名称"); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime,tzoneinfo);

  4. 最后 localtime 是最终结果。 :)

    希望这会对你有所帮助

    谢谢

答案 2 :(得分:0)

您应该使用ASP.NET应用程序的全局时区。检查this。除非您仅使用C#datatime函数,否则这将起作用。一旦你在SQL Server中有一些复杂的代码,它将使用GETTIME函数。您还将依赖SQL Server时区。

您应该以UTC格式处理内部日期时间,并仅在UI中转换时区。