我有一个托管在远程服务器上的C#MVC Web应用程序。我不知道确切的位置。
该应用程序的用户全部来自(UTC + 06.00)达卡。当用户插入新记录时,我希望从当地时间e.i(UTC + 06.00)达卡插入日期时间。
我该怎么做?
答案 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#代码:
从cookie中提取时区。
从数据库中获取插入的utcTime并存储在本地变量中(utcTime
是我使用的局部变量名称。)
使用下面提到的代码将UTC时间转换为当地时间。
TimeZoneInfo tzoneinfo = TimeZoneInfo.FindSystemTimeZoneById("浏览器时区名称"); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime,tzoneinfo);
最后 localtime 是最终结果。 :)
希望这会对你有所帮助
谢谢
答案 2 :(得分:0)
您应该使用ASP.NET应用程序的全局时区。检查this。除非您仅使用C#datatime函数,否则这将起作用。一旦你在SQL Server中有一些复杂的代码,它将使用GETTIME函数。您还将依赖SQL Server时区。
您应该以UTC格式处理内部日期时间,并仅在UI中转换时区。