Javascript-将Highy轴的时间戳转换为毫秒
请帮助我将字符串转换为时间Javascript-将Highy轴的时间戳转换为毫秒,javascript,highcharts,Javascript,Highcharts,请帮助我将字符串转换为时间格式[Hr:Min:Sec] 这是我的作品 seriesData_1.push(parseFloat($(this).attr('myVar'))); 我已尝试将此更改为: seriesData_1.push(Date.parse("1-1-1" + ($(this).attr('myVar')))); 但是没有运气。myVar将保存值20:57:13 更新:我在Highcharts和Javascript方面太笨了,在Stackoverflow的指导下,我得到了我想
格式[Hr:Min:Sec]
这是我的作品
seriesData_1.push(parseFloat($(this).attr('myVar')));
我已尝试将此更改为:
seriesData_1.push(Date.parse("1-1-1" + ($(this).attr('myVar'))));
但是没有运气。myVar
将保存值20:57:13
更新:我在Highcharts和Javascript方面太笨了,在Stackoverflow的指导下,我得到了我想要的
给你。我有一个系列的myVar
以Hr:Min:Sec
格式保存值,如20:57:13
等,需要以Y轴绘制。要知道,我们有datetime
在Y轴上键入,可以为您绘制图形。但为此,您需要将时间戳转换为毫秒
这就是我为此所做的
yourtime = $(this).attr('myVar');
hms = yourtime.split(':');
msecs = hms[0] * 3600000 + hms[1] * 60000 + hms[2]*1000;
seriesData_1.push(msecs);
现在我已经把它转换成毫秒,要用H:M:S
格式在Y轴上绘制,需要使用Y轴下的dateTimeLabelFormats
,如下所示
type: 'datetime',
dateTimeLabelFormats: {
millisecond: '%H:%M:%S',
second: '%H:%M:%S',
minute: '%H:%M:%S',
hour: '%H:%M:%S'
},
要使工具提示与H:M:S
格式对齐,请添加以下内容
tooltip: {
enabled: true,
formatter: function() {
var main = '<b>'+ Highcharts.dateFormat('%A, %b %e, %Y', this.x) +'</b>';
s = Math.floor(this.y / 1000);
m = Math.floor(s / 60);
s = s % 60;
h = Math.floor(m / 60);
m = m % 60;
h = h % 24;
if (h < 9) h = "0" + h;
if (m < 9) m = "0" + m;
if (s < 9) s = "0" + s;
return '<b>'+ this.x +'</b><br>' + '<span style="color:green">Value-</span>' + [h, m, s].join(':');
}
},
工具提示:{
启用:对,
格式化程序:函数(){
var main=''+Highcharts.dateFormat('%A,%b%e,%Y',this.x)+'';
s=数学楼层(此.y/1000);
m=数学楼层(s/60);
s=s%60;
h=数学楼层(m/60);
m=m%60;
h=h%24;
如果(h<9)h=“0”+h;
如果(m<9)m=“0”+m;
如果(s<9)s=“0”+s;
返回'+this.x+'
'+'值-'+[h,m,s].join(':');
}
},
希望这对像我这样的新手有所帮助:)正如我在评论中所说,将系列转换为秒:
var hms = val.split(':');
var secs = hms[0] * 3600 + hms[1] * 60 + hms[2];
series.push(secs);
然后将yAxis.formatter
设置为此功能,以恢复轴上的H:M:S
:
function() {
var h = Math.floor(this.value / 3600);
var m = Math.floor(this.value / 60) % 60;
var s = this.value % 60;
if (h < 9) h = "0" + h;
if (m < 9) m = "0" + m;
if (s < 9) s = "0" + s;
return [h, m, s].join(':');
}
function(){
var h=数学地板(this.value/3600);
var m=数学下限(此值/60)%60;
var s=该值为%60;
如果(h<9)h=“0”+h;
如果(m<9)m=“0”+m;
如果(s<9)s=“0”+s;
返回[h,m,s].连接(':');
}
在datetime上乱搞是适得其反的,因为它从来就不是用来存放无日期的时间的
(免责声明:所有这些都是从API描述中推断出来的,我对Highchart并不熟悉。)这与Ajax有什么关系?XMLHttpRequest对象在代码中的什么位置?可能是我太密集了,但是20:57:13
不是已经在Hr:Min:Sec
格式中了吗?@epascarello这段代码在ajax模块下highcharts@Amadan是的,这是同样的格式。但当我绘制highcharts图表时,它只拾取hr列。所以我认为它可能是字符串,需要转换为带有日期解析的时间戳,因为您只能有Y轴的数字。将日期转换为秒(hms=val.split(':');secs=hms[0]*3600+hms[1]*60+hms[2]
)并使用它。浏览器中不会显示我的图表。我得另想办法。。谢谢你的帮助,阿玛丹