【问题标题】:date.js Parse method overrides Javascript Parse methoddate.js Parse 方法覆盖 Javascript Parse 方法
【发布时间】:2014-09-19 21:03:23
【问题描述】:

我在我的网站中包含了date.js 库,因为我需要它的功能。

不过,我刚刚意识到标准的 Javascript parse() 方法被它覆盖了。

我正在尝试在 Highcharts 中构建折线图,并且数据系列希望第一个元素以毫秒为单位(他们的演示显示他们使用 Date.UTC() 方法来实现这一点,但我的数据以不同的格式)。

没有做一堆字符串操作来将我的数据转换成Date.UTC 可以识别的格式,有没有另一种方法可以在加载date.js 时获得标准的Javascript parse() 功能?

【问题讨论】:

  • 您不应在问题中提供答案。我已将答案作为社区 wiki 放入实际答案中。

标签: javascript date datejs


【解决方案1】:

我知道这不能直接解决您的问题,但无论如何它可能会有所帮助。

如果您想要一个不修改原生 Date 对象的全功能日期库,我编写了一个名为 Moment.js 的库。

它提供了 DateJS 提供的很多东西(格式化、解析、操作、timeago、i18n 等),但它更小、更快,并且不会破坏原生日期原型。

https://github.com/timrwood/moment

【讨论】:

  • 在我发现您的文档有点偏离之后,终于让它工作了 - 它说要使用 moment.day(1) 将日期设置为第一个,但应该是 moment.date (1).
【解决方案2】:

不,这是 date.js 的预期设计。它添加到 Date 对象的“原型”。有些人讨厌它,有些人喜欢它 - 但您已经发现了这种设计的一个缺点。

【讨论】:

    【解决方案3】:

    您可以告诉 Highcharts 不要使用 UTC 日期:

    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });
    

    您应该在创建图表之前执行此操作。这样您就不必担心将日期转换为 UTC,它会更容易。

    【讨论】:

    • 如果我这样做,我不明白 Highcharts 想要看到的日期 - 一个实际的 Date 对象?文档没有具体说明。
    • @earachefl:日期值将以毫秒为单位,例如如果你有一个 Date 对象d 那么d.getTime() 会给你以毫秒为单位的日期值,这就是你提供给Highcharts的值,无论你是否使用useUTC: false。不同之处在于,如果您有useUTC: true,那么您需要先将该日期转换为 UTC 日期,然后获取毫秒并馈送到 Highcharts。
    【解决方案4】:

    问完这个问题,我就这样做了:

    d = Date.parse(data);
                y = d.getFullYear();
                m = d.getMonth();
                d = d.getDate();
                dUTC = Date.UTC(y, m, d);
    

    但现在会尝试您的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2021-07-09
      • 2013-09-15
      • 2015-05-14
      • 2015-09-20
      相关资源
      最近更新 更多