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

标签 javascript .net asp.net asp.net-mvc datetime

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

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

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

这是一个例子:

  1. 数据库中存储的日期: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}”)。这为我们提供了正确的数据,并为我们设置日期格式提供了更大的灵 active ,但在这种情况下感觉有点不对劲。

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

最佳答案

我们的结果:

  1. 我尝试了一些库,如 Datejs、MS Ajax 等,但我对它们一直不是很满意。 Datejs 在我的一些测试用例中根本不起作用,没有得到积极维护,并且似乎非常关注我们不需要的语法糖(date.today().first().thursday(),等)
  2. 我们确实使用 jQuery 进行一些基本的日期/时间解析。
  3. 我遇到了很多“自己动手”的客户端日期转换“黑客”,其中大部分只解决了到 UTC 的转换问题,开始时工作正常,但最终在某些极端情况下崩溃了。 This one是许多标准 UTC 转换的 90% 解决方案,但没有解决我们的“任意时区”问题。

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

关于javascript - Web 应用程序中的时区敏感日期和时间显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664869/

相关文章:

Asp.net ajax+ Jquery : EndRequestHandler(sender, 参数)

c# - 在导致错误的查询字符串中发送 Server.UrlEncoded XML

javascript - 如何在 Javascript 中显示 2^3

javascript - 在 AFrame 中设置开始游戏按钮

javascript - Python 请求从 GET 运行 JS 文件

JavaScript :Is it possible to check image size in html fileupload on client side?

c# - 修改进程调用的 dll 方法,无需进程重启

c# - 如何测试 Windows Phone 7 的加速度计?

c# - "System.IO"在 C# 中是什么意思?

c# - 找不到程序集 "EntityFramework"