[英]How can I programmatically test if SQL Server supports 'AT TIME ZONE'?
[英]How can I display server time in relation to the end users actual time zone?
目前,我在我的网站上有很多操作:
if (auction.StartTime.Value <= DateTime.Now)
然后在我的Web应用程序的_Layout.cshtml上,我使用以下命令显示服务器时间:
<p id="time">@DateTime.Now.ToString("HH:mm")</p>
这正确地显示了当前的服务器时间,但我想根据用户的位置显示此时间。 当然,我可以这样做:
<p id="time">@DateTime.Now.ToGMT(-4).ToString("HH:mm")</p>
但这是维持治疗的噩梦。 我必须在任何地方设置这种GMT扩展方法。 也许在.NET框架中有一些东西?
你会怎么建议我处理这个?
其中最重要的部分是确定用户的时区。 根据站点的不同,这可以是硬编码的(例如,如果它仅针对单个时区)或用户登录后的部分设置。
一旦你知道时区是什么,那么TimeZoneInfo.ConvertTimeFromUtc之类的东西可能有助于实际转换日期时间。
使用此StackOverflow问题可以将时区信息从用户的浏览器发送到您的服务器(不幸的是,时区信息不是浏览器流量的一部分,afaik)。
您可以在第一个请求中将浏览器的当前时间嵌入隐藏字段(使用javascript GetDate()函数),然后在服务器上检索它。
最简单的方法是以UTC格式发送未格式化的(不变文化格式)值,在客户端重新创建日期对象(即使用JavaScript),然后根据当地文化规则(和时间)使用Globalize正确格式化日期和时间区域,但这一个将自动调整)。
更难的是需要在用户配置文件(或cookie)中存储时区信息,并强制用户首先选择有效的时区。 或者,在客户端读取时区偏移量(JavaScript Date的对象getTimezoneOffset()函数),并在每个会话中将其发送到服务器(例如,通过Ajax请求)。 但这不可靠(不同的时区现在可能有相同的偏移,但在不同的日期切换夏令时)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.