请帮我将字符串转换为时间format[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
保持20:57:13
等Hr:Min:Sec
等格式的值,需要在Y axis
中绘制。知道我们在Y轴上有datetime
类型,可以为你绘制图形。但为此,您需要将时间戳转换为毫秒。
这就是我为此所做的
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轴上绘制,您需要在dateTimeLabelFormats
下使用y axis
,如下所示
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(':');
}
},
希望这有助于像我这样的新手:)
答案 0 :(得分:1)
正如我在评论中所说,将系列转换为秒:
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(':');
}
与日期时间混淆是适得其反的,因为它永远不会意味着保持无日历时间。
(免责声明:所有这些都是从API描述中推断出来的,我对Highchart不熟悉。)