带时区的 Dygraphs 时间戳

问题描述 投票:0回答:3

我知道有很多关于 dygraph 中的日期时间解析和 Javascript 问题的讨论。但是,我仍然有一个如何正确传递日期时间的问题。

我正在使用 dygraph 来显示数据(间隔 5 秒的点),并且拥有正确的日期时间至关重要。但是,如果我将日期时间作为时间戳 (1401580800) 或 ISO 8601 (2014-06-01T00:00:00+00:00) 传递,我总是会将日期时间修改为本地时间。

我的问题是,如何正确地将日期时间传递给dygraph以使日期时间不改变?

timezone dygraphs
3个回答
1
投票

Dygraphs 使用 Javascript 日期,根据您当地的时区显示(不幸的是,无法使用任意时区显示它们)。

一个解决方案是修改数据 - 我在自己的工作中遇到了类似的问题,我做了一个小辅助函数来制作假的 Javascript UTC 日期(基本上最终得到一个实际上是错误时间但显示的 Javascript 日期以当地时间显示时看起来正确)。这适用于我的应用程序,它使用时刻 (http://momentjs.com/) 来表示各处的日期,除非其他库要求使用 Javascript 的日期。

另一个(可能更正确)的解决方案是修改 Dygraph 的功能以显示正确的内容,如本文的答案所示:Dygraph 显示任意时区中的日期


0
投票

JavaScript

Date
对象将始终使用其运行的计算机的本地时间。如果您不想要这种行为,则需要使用其他东西。考虑使用类似 moment.js 的东西构建一个预先格式化的字符串,然后将字符串传递给 dygraphs 而不是日期。


0
投票

我在使用 Dygraph 来绘制没有夏令时存储的数据时也遇到了类似的问题。一年 363 天都没有问题:JavaScript“相信”这是当地时间,而 Dygraph 将图表显示为当地时间。然而,当我当地时区的春季和秋季时间发生变化时,这会导致时间轴发生变化。我现在还使用假的 UTC 时间。这是通过首先将“Z”附加到传递给 JavaScript 的 Date 构造函数的 ISO 日期和时间字符串来完成的。然后使用选项 labelsUTC: true 实例化 Dygraph 对象。最后,它不是真正的 UTC,但它在我的数据库和显示的图表之间是一致的。 现在,如果您需要在图表本身上拥有真实的时区,我的建议是将其作为单个字符串变量单独处理。您当然可以从数据中提取它,然后可以将其显示为时间轴附近的标签。这样,您就不必担心修改 Dygraph 本身。

© www.soinside.com 2019 - 2024. All rights reserved.