在工作中使用echarts时,偶然发现折线图中对时间类型变量的用法:
now前面的+号何解?
now = new Date(+now + oneDay);
后来查阅资料,看到一篇博客,解释如下:
这是对后面的对象做一个+运算,触发对象执行valueOf进行求值!
而Date实例的valueOf返回它的毫秒数,大家可以尝试如下代码:
var now = new Date, time = now.getTime();console.log(time==now.valueOf());//trueconsole.log(time==+now);//true
再举个例子:
???function person() { ???} ???person.prototype.valueOf = function () { ???????return "miaoying"; ???} ???var foo = new person(); ???console.log("hello " + foo);//这里将输出字符串"hello miaoying" ???console.log("hello " + foo.valueOf());//这里将输出字符串"hello miaoying"
echarts中的代码如下:
function randomData() { ???now = new Date(+now + oneDay); ???value = value + Math.random() * 21 - 10; ???return { ???????name: now.toString(), ???????value: [ ???????????[now.getFullYear(), now.getMonth() + 1, now.getDate()].join(‘/‘), ???????????Math.round(value) ???????] ???}}var data = [];var now = +new Date(1997, 9, 3);var oneDay = 24 * 3600 * 1000;var value = Math.random() * 1000;for (var i = 0; i < 1000; i++) { ???data.push(randomData());}option = { ???title: { ???????text: ‘动态数据 + 时间坐标轴‘ ???}, ???tooltip: { ???????trigger: ‘axis‘, ???????formatter: function (params) { ???????????params = params[0]; ???????????var date = new Date(params.name); ???????????return date.getDate() + ‘/‘ + (date.getMonth() + 1) + ‘/‘ + date.getFullYear() + ‘ : ‘ + params.value[1]; ???????}, ???????axisPointer: { ???????????animation: false ???????} ???}, ???xAxis: { ???????type: ‘time‘, ???????splitLine: { ???????????show: false ???????} ???}, ???yAxis: { ???????type: ‘value‘, ???????boundaryGap: [0, ‘100%‘], ???????splitLine: { ???????????show: false ???????} ???}, ???series: [{ ???????name: ‘模拟数据‘, ???????type: ‘line‘, ???????showSymbol: false, ???????hoverAnimation: false, ???????data: data ???}]};
参考:http://www.cnblogs.com/Raoh/p/4212075.html
由echarts想到的js中的时间类型
原文地址:http://www.cnblogs.com/miaoying/p/7648496.html