Web服务器是否有标准方法可以确定用户在网页中的时区?
也许来自HTTP标头或user-agent字符串的一部分?
我知道如何获得时区偏移,但我需要的是能够检测"美国/纽约"之类的东西.这甚至可能来自JavaScript还是我将不得不根据偏移量进行猜测?
使用moment.js和moment-timezone.js时,获取客户端时区并将其转换为其他时区的最佳方法是什么?
我想找出什么是客户时区,然后将其日期和时间转换为其他时区.
有没有人有这方面的经验?
我正在使用Zend_Framework编写应用程序(因此解决方案可以依赖它).
如何获得客户的时区?
例如,如果有人在俄罗斯莫斯科,我想获得3*60*60(因为有UTC + 3).如果他在英国,我想要零.如果他使用UTC-3:30(加拿大?),我想要-3.5*60*60.
(这不是关于格式的问题 - 我对俄罗斯圣彼得堡获得'欧洲/莫斯科'或'UTC-3'是好的,而是让时区客户端使用.但是以秒为单位的delta是首选)
想到的唯一解决方案是让javascript获取本地时间并重定向.
我们的应用程序旨在处理来自不同地理位置的用户.
我们无法检测当前最终用户当地时间和时区对其进行操作的情况.他们选择不同的文化,如sv-se,en-us,ta-In甚至他们从欧洲/伦敦时区访问..
我们在美国托管服务器托管它,应用程序用户来自 Norway/Denmark/Sweden/UK/USA/India
问题是我们用来DateTime.Now存储记录创建/更新日期等.
由于服务器在美国运行,所有用户数据都保存为美国时间:(
在SO中进行研究后,我们决定将所有历史日期存储在DB中 DateTime.UtcNow
问题:

创建了一条记录29 Dec 2013, 3:15 P.M Swedish time.
public ActionResult Save(BookingViewModel model)
{
Booking booking = new Booking();
booking.BookingDateTime = model.BookingDateTime; //10 Jan 2014 2:00 P.M
booking.Name = model.Name;
booking.CurrentUserId = (User)Session["currentUser"].UserId;
//USA Server runs in Pacific Time Zone, UTC-08:00
booking.CreatedDateTime = DateTime.UtcNow; //29 Dec 2013, 6:15 A.M
BookingRepository.Save(booking);
return View("Index");
}
Run Code Online (Sandbox Code Playgroud)
我们希望向在India/Sweden/USA登录的用户显示相同的历史记录时间.
截至目前,我们正在使用当前文化用户登录并从配置文件中选择时区并使用TimeZoneInfo类进行转换
<appSettings>
<add key="sv-se" value="W. Europe Standard Time" />
<add key="ta-IN" value="India Standard …Run Code Online (Sandbox Code Playgroud) 我将所有DateTime字段存储为UTC时间.当用户请求网页时,我想采用他首选的本地时区(而不是服务器计算机的本地时区)并自动将所有Web表单中的所有DateTime字段显示为本地日期.
当然,我可以在每个表单中的每个DateTime.ToString()调用上应用转换,或者实现一些帮助程序实用程序但是这是一个耗时的任务,并且还有一些第三方组件使用自定义DateTime显示模板进行配置很棘手.
基本上,我想使DateTime类的行为如下:
from this moment on for this web request,
whenever some code calls DateTime.ToString(), convert it to the local time
using the timezone offset given at the very beginning of the web request,
but if possible, please keep .NET core library DateTime.ToString() calls intact
(I don't want to mess up event logging timestamps etc.)
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
顺便说一下,我使用的是ASP.NET MVC 4,如果重要的话.
我想知道javascript中是否有内置函数,具有时区信息,如
America/Los_Angeles(或等价物)可以根据需要考虑的因素来确定吗?
类似于http://momentjs.com/timezone/在它的主页上做了吗?或者是否有这些区域的列表,我可以尝试建立自己的库?从我收集的内容http://momentjs.com/timezone/以vaule America/Los_Angeles为例来确定偏移量,但我找不到如何做相反的事情.
我服务器的机器时区是HST格式.当我尝试在javascript中使用http请求获取时区时.它以UTC格式给我.有没有办法获得服务器的时区.