我有一个c# MVC Web应用程序托管在远程服务器上。我不知道它的确切位置。
该应用程序的用户都来自(UTC + 06.00)达卡。当用户插入一条新记录时,我希望插入的日期时间来自他的本地时间。e. (UTC + 06.00) Dhaka。
我该怎么做?
下面的代码解决了我的问题-
DateTime utcTime = DateTime.UtcNow;
TimeZoneInfo BdZone = TimeZoneInfo.FindSystemTimeZoneById("Bangladesh Standard Time");
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, BdZone);
您可以遵循以下方法:
步骤1:您可以在数据库中存储UTC时间。如果您使用SQL,那么您可以使用GETUTCDATE()
来获取UTC日期。
请使用Javascript设置一个cookie,存储浏览器的时区。(您可以使用jsTimeZoneDetect等脚本获取时区名称)
步骤3后端c#代码:
从cookie中提取时区
从数据库中获取插入的utcTime并存储在本地变量中(
utcTime
是我使用的本地变量名)使用下面提到的代码将UTC时间转换为本地时间。
TimeZoneInfo tzoneinfo = TimeZoneInfo。FindSystemTimeZoneById("浏览器时区名称");DateTime localTime = TimeZoneInfo。ConvertTimeFromUtc (utcTime tzoneinfo);
最后localtime是最终结果。:)
希望这对你有帮助
谢谢
您应该使用ASP的全局时区。网络应用程序。检查这个。除非你只使用c#数据时间函数,否则这是可行的。一旦你有一些复杂的代码在SQL Server将使用GETTIME函数。您还将依赖SQL Server时区。
你应该用UTC来处理内部日期时间,并且只在UI中转换时区。