【发布时间】:2011-08-05 14:40:40
【问题描述】:
我正在寻找有关在用户当前时区以外的时区在 Web 应用程序中显示时间的建议。
我们将日期/时间以 UTC/GMT 格式存储在数据库中,因此格式化 UTC/GMT 时间或用户当前时区不是问题。但是,在其他情况下,我们需要从任意时区的角度显示时间(即此页面上的每个日期/时间都是东部时间,无论用户是否在西海岸、中部、东部、等等。)。
过去我们存储了偏移量或时区信息,然后在 .Net 中在服务器代码中进行计算,或者我们在 javascript 中进行了一些我希望避免的客户端操作,因为这一切都变得非常依赖在 javascript 和用户的浏览器上。我想知道在更多客户端/MVC 类型的应用程序中执行此操作的最佳方法。
这是一个例子:
- 数据库中存储的日期:1302790667(2011 年 4 月 14 日星期四 14:17:47 GMT)
- 为中部时区客户显示的转换日期:2011 年 4 月 14 日星期四 09:17:47
- 我真正想要显示的日期,总是在东部时区:2011 年 4 月 14 日星期四 10:17:47
在上面的例子中,很容易获得 UTC (#1) 或用户当前时区 (#2) 的时间,但很难获得 #3。我的选择似乎是:
- 在 db 中存储偏移量或时区并在客户端上进行计算 - 这是我们过去使用 .Net 所做的,但在客户端代码中似乎更加混乱是我们目前试图避免的路径。
- 在服务器上进行转换并发送完整的日期以显示给客户端 - 客户端收到一个字符串(“Thu Apr 14 10:17:47 2011”)。这可行,但不是很灵活。
- 在服务器上进行转换,将其分成几部分并将它们发送到客户端,然后将它们重新组合在一起。 (“{DayOfWeek:Thu, Month:Apr, Day:14, Hour:10, Minute:17}”)。这为我们提供了正确的数据,并为我们在格式化日期方面提供了更大的灵活性,但在这种情况下感觉有点不对劲。
还有其他选择的想法吗?其他人如何处理类似情况?谢谢。
【问题讨论】:
-
你最终使用了什么?我正要试一试this,我有同样的客户要求,我正在为此争分夺秒!
-
我们最终在服务器上进行了所有计算。我会添加一个答案。
标签: javascript .net asp.net asp.net-mvc datetime