2011-04-14 58 views
5

我正在寻找有关在用户当前时区以外的时区显示Web应用程序中的时间的建议。Web应用程序中的时区敏感日期和时间显示?

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

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

下面是一个例子:存储在分贝

  1. 日期:1302790667(星期四,2011年4月14日十四时17分47秒GMT)在中部时区中的客户端显示
  2. 转换日期:星期四四月14 9点17分47秒2011
  3. 日期其实我是想在东部时区显示,总:周四4月14日十时17分47秒2011

在上面的例子中,可以很容易地获得时间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}”)。这给了我们正确的数据,并给了我们在日期格式化方面的更多灵活性,但是对于这种情况感觉有点不对。

任何其他选项的想法?其他人如何处理类似的情况?谢谢。

+0

你最终使用了什么?我即将试用[此](https://github.com/csnover/js-iso8601),我有相同的客户要求,我正在争分夺秒! – blong 2011-09-29 13:20:30

+1

我们最终完成了服务器上的所有计算。我会添加一个答案。 – 2011-09-29 17:51:00

回答

0

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

我通常不会建议图书馆,当他们的使用没有明确允许的问题,但Datejs不是很大,它非常稳固(即使它被称为“alpha”版本)。如果你不想依赖这样的东西,你可能想要看看它,只是为了看看它的扩展如何实现的基础知识。

1

我们的研究结果:

  1. 我尝试了像Datejs,MS阿贾克斯等几个库,我一直都不是很满意。Datejs在我的一些测试用例中根本不起作用,没有被主动维护,并且似乎非常关注我们不需要的语法糖(date.today()。first()。thursday(),等等)
  2. 我们使用jQuery进行一些基本的日期/时间解析。
  3. 我遇到很多“自己动手”的客户端日期转换“黑客”,其中大多数只处理转换为UTC,开始工作正常,然后最终在一些边缘情况下崩溃。 This one是大量标准UTC转换的90%解决方案,但并未解决我们的“任意时区”问题。

在代码复杂度增加的转换例程和他们似乎导致的错误之间,我们决定避免大部分时间处理客户端数据。我们使用现有的日期处理例程在服务器上进行日期转换,并将格式化的日期或信息作为属性传递给视图。如果我们需要一个单独的日期,我们只需添加另一个属性。通常,我们一次只需要一些属性(即EventDateUTC,EventDateLocal,EventDateAlwaysAustralia和EventDayOfWeek)。

相关问题