Web应用程序中的时区敏感日期和时间显示?

Bri*_*lis 5 .net javascript asp.net asp.net-mvc datetime

我正在寻找在用户当前时区以外的时区中在Web应用程序中显示时间的建议.

我们将日期/时间以UTC/GMT格式存储在数据库中,因此格式化UTC/GMT时间或用户当前时区不是问题.但是,在其他情况下,我们需要从任意时区的角度显示时间(即此页面上的每个日期/时间都在东部,无论用户是否在西海岸,中部,东部,等等.).

在过去,我们已经存储了偏移量或时区信息,然后在.Net中的服务器代码中进行了计算,或者我们已经在javascript中做了一些我希望避免的客户端操作,因为它们都变得非常依赖于javascript和用户的浏览器.我想知道在更客户端/ MVC类型的应用程序中执行此操作的最佳方法.

这是一个例子:

  1. 日期存储在db:1302790667(星期四,2011年4月14日14:17:47 GMT)
  2. 在中部时区显示的客户转换日期:2011年4月14日星期四09:17:47
  3. 我实际想要显示的日期,总是在东部时区:2011年4月14日星期四10:17:47

在上面的示例中,很容易获得UTC(#1)或用户当前时区(#2)的时间,但获得#3更加困难.我的选择似乎是:

  1. 在数据库中存储偏移量或时区并在客户端上进行计算 - 这是我们过去用.Net所做的事情,但在客户端代码中看起来更加混乱是我们目前试图避免的路径.
  2. 在服务器上进行转换并向客户端发送完整日期以显示 - 客户端收到一个字符串("Thu Apr 14 10:17:47 2011").这有效,但不是很灵活.
  3. 在服务器上进行转换,将其分解为部分并将其发送到客户端,然后将它们重新组合在一起.("{DayOfWeek:Thu,Month:Apr,Day:14,Hour:10,Minute:17}").这为我们提供了正确的数据,并为我们格式化日期提供了更大的灵活性,但对于这种情况感觉有点不对劲.

还有其他选择吗?其他人如何处理类似情况?谢谢.

Poi*_*nty 0

我建议您查看Datejs库。它提供了一系列基本 JavaScript 日期操作的扩展,包括“setTimezone()”方法以及将日期转换为格式化字符串以供显示的灵活方法。

当问题中没有明确允许使用库时,我通常会犹豫是否建议库,但 Datejs 不是很大,而且非常可靠(尽管它被称为“alpha”版本)。如果您不想依赖类似的东西,您可能无论如何都想看看它,只是为了了解其扩展是如何实现的基础知识。