Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Web应用程序中显示时区敏感的日期和时间?_Javascript_.net_Asp.net_Asp.net Mvc_Datetime - Fatal编程技术网

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

Javascript 在Web应用程序中显示时区敏感的日期和时间?,javascript,.net,asp.net,asp.net-mvc,datetime,Javascript,.net,Asp.net,Asp.net Mvc,Datetime,我正在寻找在用户当前时区以外的时区显示web应用程序时间的建议。 我们在数据库中以UTC/GMT格式存储日期/时间,因此设置UTC/GMT或用户当前时区的时间格式不是问题。但是,在其他情况下,我们需要从任意时区的角度显示时间(即,无论用户是否在西海岸、中部、东部等地,此页面上的每个日期/时间都在东部) 在过去,我们存储了偏移量或时区信息,然后在.Net的服务器代码中进行计算,或者我们用javascript进行了一些客户端操作,这是我希望避免的,因为这一切都变得非常依赖javascript和用户的

我正在寻找在用户当前时区以外的时区显示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})。这为我们提供了正确的数据,并在格式化日期方面提供了更大的灵活性,但在这种情况下感觉有点错误

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

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

    如果在问题中没有明确允许使用库,我通常会犹豫是否建议使用库,但Datejs不是很大,而且非常可靠(尽管它被称为“alpha”版本)。如果您不想依赖这样的东西,您可能希望看看它,看看它的扩展是如何实现的。

    我们的结果:

  • 我尝试了一些库,比如Datejs、MS Ajax等,但我对它们从来都不是很满意。Datejs在我的一些测试用例中根本不起作用,没有被积极维护,而且似乎非常关注我们不需要的语法糖(date.today().first().Thready(),等等)
  • 我们确实使用jQuery进行一些基本的日期/时间解析
  • 我遇到了很多“滚动您自己的”客户端日期转换“黑客”,其中大多数只是针对到UTC的转换,一开始运行良好,然后最终在一些边缘案例中崩溃。是许多标准UTC转换的90%解决方案,但没有解决我们的“任意时区”问题

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

    您最终使用了什么?我要试一试,我有同样的客户要求&我在这一点上正在与时间赛跑!我们最终在服务器上完成了所有的计算。我会补充一个答案。