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

问题描述

| 我正在寻找有关在Web应用程序中以除用户当前时区之外的时区显示时间的建议。 我们将日期/时间存储在数据库的UTC / GMT中,因此格式化UTC / GMT的时间或用户的当前时区不是问题。但是,在其他情况下,我们需要从任意时区的角度显示时间(即,该页面上的每个日期/时间都在东部,无论用户是否在西海岸,中部,东部,等等。)。 过去我们存储了偏移量或时区信息,然后在.Net的服务器代码中进行了计算,否则我们在javascript中做了一些我希望避免的客户端操作,因为它们都非常依赖javascript和用户的浏览器。我想知道在更多客户端/ MVC类型的应用程序中执行此操作的最佳方法。 这是一个例子: 存储在数据库中的日期:1302790667(2011年4月14日,星期四,格林尼治标准时间) 在中央时区为客户显示的转换日期: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} \”)。这为我们提供了正确的数据,使我们在设置日期格式方面更具灵活性,但是在这种情况下感觉有点不对劲。 还有其他选择的想法吗?其他人如何处理类似情况?谢谢。     

解决方法

我们的结果: 我试用了一些库,如Datejs,MS Ajax等,但我从未对它们感到非常满意。在我的一些测试用例中,Datejs根本不起作用,没有得到积极维护,并且似乎将很多精力放在不需要的语法糖上(date.today()。first()。thursday( )等) 我们确实使用jQuery进行一些基本的日期/时间解析。 我遇到了很多“自费”客户端日期转换“ hacks”,其中大多数仅解决了到UTC的转换,开始工作正常,然后最终在某些情况下崩溃了。这是许多标准UTC转换的90%解决方案,但没有解决我们的“任意时区”问题。 在转换例程添加的代码复杂性和它们似乎引起的错误之间,我们决定避免大部分时间处理客户端日期。我们使用现有的日期处理例程在服务器上进行日期转换,并将格式化的日期或信息向下传递为视图要使用的属性。如果需要单独的日期,只需添加另一个属性。通常一次只需要几个属性(即EventDateUTC,EventDateLocal,EventDateAlwaysAustralia和EventDayOfWeek)。     ,我建议您研究一下Datejs库。它提供了对基本JavaScript日期操作的大量扩展,包括\“ setTimezone()\”方法和将日期转换为格式化的字符串以进行显示的灵活方法。 当问题中没有明确允许使用库时,我通常会毫不犹豫地建议库,但是Datejs并不是很大,而且非常可靠(即使它被称为“ alpha”版本)。如果您不希望依赖于此类内容,则无论如何都应该看看它,以了解实现其扩展的基础知识。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...