Jon*_*onF 5 javascript asp.net utc
我有时间以utc格式保存在sql数据库中.我在gridview上显示那些时间,但它们仍然是UTC格式.我想在当地时间将它们转换为客户端的浏览器.问题是虽然我可以获得仅适用于当前日期/时间的时区偏移量.如果将来某些日期在夏令时期间结束,那么这种抵消可能会改变.我对网络编程比较陌生,但似乎我需要做的是运行一些Javascript,因为每个条目都绑定到gridview,它以某种方式获取C#datetimeoffset对象并将其转换为本地时间.或许那可能不可能?
如果您有TimeZoneInfo对象,可以在服务器端完成此操作.您可以使用静态ConvertTimeFromUtc()方法.
在C#中:
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(myDbDateTime, myTimeZoneInfo);
Run Code Online (Sandbox Code Playgroud)
如果你在服务器端没有时区,那么事情变得棘手,因为javascript不提供客户端的时区(除非它们在美国,甚至只在某些浏览器上).在这种情况下,最好强制用户选择他们当前的时区并将其存储在他们的帐户中.如果向匿名用户显示此信息,则默认情况下应显示为UTC,并提供一个选项以针对选定的时区刷新它.
更新
尝试自动确定用户的时区时会出现几个问题.
javascript函数getTimezoneOffset()最初可能听起来不错,但由于有多个时区具有相同的偏移量,因此这不是唯一值.许多这些非独特区域之间的区别在于它们实现了夏令时.
示例:Indiana不考虑DST.因此,半年的偏移量与东部时间相匹配,而另一半的偏移量等于中心时间.
但是,如果您的用户群主要位于美国并使用IE,Chrome,Safari或Firefox,那么您可以toString()在Date对象上使用该方法来获取时区.这些浏览器以不同的方式将时区附加到日期字符串.在美国以外的地区,所有浏览器都不包含时区(尽管有些人可能仍会显示).
打开http://jsbin.com/onulo3观察:
IE8:孙2月14日22点12分22秒EST 2010
浏览器:太阳2010年2月14日22点12分22秒格林尼治标准时间0500(东部标准时间)
的Safari:太阳2010年2月14日22:12:22 GMT-0500(东部标准时间)
Firefox: 2010年2月14日星期二22:12:22 GMT-0500(东部标准时间)
通过一些解析,您现在可以确定所有美国用户的时区.对于其他人,您可以以UTC显示时间(并注意到该效果).
| 归档时间: |
|
| 查看次数: |
5015 次 |
| 最近记录: |