gpt4 book ai didi

Mac 上的 JavaScript XDate 无法识别本地时区

转载 作者:行者123 更新时间:2023-12-03 12:16:42 24 4
gpt4 key购买 nike

我在我们的 AngularJS, Cordova PhoneGap 应用程序上使用 JavaScript XDate 插件。我们正在使用 XCode 进行开发。我们有一个函数执行 REST 服务调用以从 SQL Server 数据库检索时间戳。

返回值时,其格式如下:

"2014-07-09T11:12:13.123"

为了正确填充我们的 XDate 变量,我必须这样做:

var date = new XDate(dateString.substring(1, 20));

这会删除实际日期值中的引号和毫秒。

但是,我发现这是将其保存为 UTC 时间。阅读完后,我发现只需将“true”参数添加到 XDate 构造函数作为最后一个参数即可指定使用当前时区,因此我将其更新为:

var date = new XDate(dateString.substring(1, 20), true);

完美!一切都很好......在我的机器上。

一位同事刚刚将他的 Mac 操作系统更新到 10.9.4(我运行的是 10.8.5)。在他的机器上,当他读入时,它仍然认为该变量是 UTC 时间。我刚刚让另一位开发人员对此进行了测试(她使用的是 10.9.3),她说的是正确的 CDT 时区。

这是 Mac 操作系统问题吗,因为它只在他的机器上出现问题,而没有其他开发人员出现问题?

最佳答案

根据the XDate documentation ,传递 true 会将值视为 UTC - 而不是本地值。

默认是本地的,或者此设置的false

See the JSFiddle here.

其他一些事情:

  • 您不需要减少毫秒数。 XDate 可以很好地处理它们。

  • 字符串开头有引号有点奇怪。通常,引号用于分隔字符串的开始和结束位置。如果引号位于字符串中,则说明它们被错误地插入到了堆栈的更高位置。

  • 您提到了客户端堆栈和数据库,但没有提到什么将数据从数据库提供给客户端。例如,ASP.Net 或 PHP。如果你想避免客户端混淆,那么你应该在这一层调整时间戳以使其完全合格。

    通过限定,我的意思是它应该包含 Z 来指示 UTC,或时区偏移量,例如 -05:00。这是RFC 3339推荐的。通过无条件地将值发送给客户端,您可以允许不同的客户端根据适用于他们的本地时区来解释该值。这通常不是我们所期望的。

关于Mac 上的 JavaScript XDate 无法识别本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658782/

24 4 0
文章推荐: javascript - 在javascript中如何从服务器打开文件?
文章推荐: javascript - 从 URL 问题获取模型
文章推荐: javascript - 如何检查each()迭代以promise()结束
文章推荐: javascript - 使用键盘时从