由echarts想到的js中的时间类型

Posted 南墙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由echarts想到的js中的时间类型相关的知识,希望对你有一定的参考价值。

在工作中使用echarts时,偶然发现折线图中对时间类型变量的用法:

now前面的+号何解?

now = new Date(+now + oneDay);

后来查阅资料,看到一篇博客,解释如下:
这是对后面的对象做一个+运算,触发对象执行valueOf进行求值!
Date实例的valueOf返回它的毫秒数,大家可以尝试如下代码:
var now = new Date, time = now.getTime();

console.log(time==now.valueOf());//true

console.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中的时间类型的主要内容,如果未能解决你的问题,请参考以下文章

新手求助echarts关系图

ECharts的简单使用

怎么用java编写echarts代码

JavaScript笔试题(js高级代码片段)

由javascript中的this指针所想到的

VSCode自定义代码片段——JS中的面向对象编程