我有一个.NET Web服务。
它提供来自网络用户的AJAX请求。
我只想知道如何自动获取用户的时区...不是当前时间偏移,而是实际时区 - 例如,中央标准时间现在是-5:00,但是东部标准时间将是-5 :00一旦夏令时结束。我想区分这些用户。
我还想知道如何获取他们的文化设置(“en-US”等),以便我可以将我的网络服务中的日期时间和数字呈现给他们的特定偏好。
任何Javascript或.NET解决方案都可以使用。 感谢。
注意:询问用户是完全的最后手段,因为它是一个Web服务。
答案 0 :(得分:1)
在请求中包含时区是RFC here
草案的主题因为没有实现,唯一的解决方案是在JavaScript中获取UTC偏移量:
// create Date object for current location
d = new Date();
// convert to msec since Jan 1 1970
localTime = d.getTime();
// obtain local UTC offset and convert to msec
localOffset = d.getTimezoneOffset() * 60000;
答案 1 :(得分:1)
假设您的客户端从浏览器连接到Web服务,您可以使用Request.Headers [“Accept-Language”]来检测浏览器的文化设置。无法直接从服务器获取时区,您需要一些客户端上的javascript计算本地时钟和GMT之间的时差。
如果您的网络服务被不同地使用(即不是来自浏览器),则需要将这两条信息作为参数添加到您的网络服务方法中。
答案 2 :(得分:1)
您最好通过服务参数“询问用户”。例如,用户的位置并不告诉您他们只是访问该地点并且仍然在他们的家乡时间运行;或者他们在多文化区域(例如瑞士),并选择了你没想到的文化(法语,当你期待德语时)。