date.js解析方法覆盖Javascript解析方法
我将date.js解析方法覆盖Javascript解析方法,javascript,date,datejs,Javascript,Date,Datejs,我将date.js库包含在我的站点中,因为我需要它的功能 不过,我刚刚意识到,标准Javascriptparse()方法被它覆盖了 我试图在Highcharts中构建一个折线图,数据系列希望第一个元素以毫秒为单位(他们的演示显示他们使用Date.UTC()方法来实现这一点,但我的数据以不同的格式返回) 除了执行一系列字符串操作以将数据转换为Date.UTC可以识别的格式之外,还有其他方法可以在加载Date.js时获得标准Javascriptparse()功能吗?没有,这是Date.js的预期设计
date.js
库包含在我的站点中,因为我需要它的功能
不过,我刚刚意识到,标准Javascriptparse()
方法被它覆盖了
我试图在Highcharts中构建一个折线图,数据系列希望第一个元素以毫秒为单位(他们的演示显示他们使用Date.UTC()
方法来实现这一点,但我的数据以不同的格式返回)
除了执行一系列字符串操作以将数据转换为
Date.UTC
可以识别的格式之外,还有其他方法可以在加载Date.js
时获得标准Javascriptparse()
功能吗?没有,这是Date.js的预期设计。它添加到日期对象的“原型”中。有些人讨厌它,有些人喜欢它-但您已经发现了这种设计的一个缺点。您可以告诉Highcharts不要使用UTC日期:
Highcharts.setOptions({
global: {
useUTC: false
}
});
您应该在创建图表之前执行此操作。这样,您就不必担心将日期转换为UTC,这会更容易。我知道这不是解决您问题的直接方法,但它可能会有所帮助 如果您想要一个功能齐全的日期库,它不会修改本机
date
对象,那么我编写了一个名为Moment.js的库
它提供了DateJS提供的许多功能(格式化、解析、操作、timeago、i18n等),但它更小、更快,并且不会破坏本机日期原型
在我问了这个问题之后,我继续这样做:
d = Date.parse(data);
y = d.getFullYear();
m = d.getMonth();
d = d.getDate();
dUTC = Date.UTC(y, m, d);
但现在我将尝试您的建议。如果我这样做,我不明白Highcharts希望看到的日期是什么-实际的日期对象?文档没有指定。@earachefl:日期值将以毫秒为单位,例如,如果您有一个日期对象
d
,则d.getTime()
将以毫秒为单位给出日期值,这是您输入Highcharts的值,无论您是否使用useUTC:false
。不同之处在于,如果您使用了useUTC:true
,那么您需要先将该日期转换为UTC日期,然后获得毫秒并输入到Highcharts。在我发现您的文档有点不对劲后,终于让它起作用了-它说使用矩.day(1)将日期设置为1,但应该是矩.date(1).你不应该在问题中提供答案。我已经把答案作为一个社区wiki放到了一个实际的答案中。