Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将沿d3.js图形轴的unix日期值转换为dd-mm-yy格式?_Javascript_Date_D3.js_Unix Timestamp - Fatal编程技术网

Javascript 如何将沿d3.js图形轴的unix日期值转换为dd-mm-yy格式?

Javascript 如何将沿d3.js图形轴的unix日期值转换为dd-mm-yy格式?,javascript,date,d3.js,unix-timestamp,Javascript,Date,D3.js,Unix Timestamp,目前,我的数据以unix日期格式输入到表中,但我无法将unix日期重新格式化为任何其他格式,例如dd mm yy 我目前有以下内容,并且一直在尝试编辑xAxis=d3.svg.axis()下的区域 有人能帮忙吗?我要做的是(取决于数据的长度)在进行任何d3绘图之前对其进行迭代,并将数据对象的日期字段强制转换为格式化日期。我说这取决于数据的长度,因为如果数据非常长,并且您实际上正在呈现一个页面,那么您可能希望避免重复两次,并且在查看所有数据时,您可能会执行此步骤。foreach并实际将内容添加到s

目前,我的数据以unix日期格式输入到表中,但我无法将unix日期重新格式化为任何其他格式,例如dd mm yy

我目前有以下内容,并且一直在尝试编辑xAxis=d3.svg.axis()下的区域

有人能帮忙吗?

我要做的是(取决于数据的长度)在进行任何d3绘图之前对其进行迭代,并将数据对象的日期字段强制转换为格式化日期。我说这取决于数据的长度,因为如果数据非常长,并且您实际上正在呈现一个页面,那么您可能希望避免重复两次,并且在查看所有数据时,您可能会执行此步骤。foreach并实际将内容添加到svg/g/行,您有什么经验。为了便于阅读,我喜欢分开做

var parseDate = d3.time.format("%d-%b-%y").parse;

data.forEach(function(d){               

    var timestamp= new Date(d.timestamp * 1000);
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var month = months[timestamp.getMonth()];
    var date = timestamp.getDate();
    var year = timestamp.getFullYear()-2000;

    var formatted_time = date + '-'+ month + '-' + year;

    d['date']= parseDate(formatted_time);


});

这应该让你开始。在这里的例子中,我将时间戳作为一个整数,根据精度的不同,您可能希望或不希望将它乘以1000
%b
是命名月份缩写的d3语法。

如果处理时间数据,请尝试使用d3的内置时间刻度(),而不是线性刻度(其中有
xRange=d3.scale.linear
)。然后,您可以为轴提供其刻度的时间格式(如,
xAxis.tickFormat(d3.time.format(“%d-%b-%y”))
),而无需对数据集进行任何迭代

var parseDate = d3.time.format("%d-%b-%y").parse;

data.forEach(function(d){               

    var timestamp= new Date(d.timestamp * 1000);
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var month = months[timestamp.getMonth()];
    var date = timestamp.getDate();
    var year = timestamp.getFullYear()-2000;

    var formatted_time = date + '-'+ month + '-' + year;

    d['date']= parseDate(formatted_time);


});