我有一个奇怪的问题。我正在加载概述页面的数据。我需要显示最大日期,以便用户知道他们正在处理的时间段。现在,我知道这应该是哪个日期(今天或昨天的日期,这会每晚更新一次),但我还是想做一个最大功能,以防万一在更新过程中出现问题。
我遇到的问题是d3.max和自定义最大日期函数都返回错误的日期。未来一个月,今天应该显示2015年7月9日,但它显示2015年7月10日。当我在7/10过滤数据时,我得到一个空数组。在小提琴这个工作正常,所以有一些可疑的事情发生。我确实运行了d3.tsv(tsv是正确的,即使扩展名为.csv,文件实际上是以tab分隔的),可能会出现问题吗?我可能会出错的任何想法?仅解析函数返回正确的结果,读取的日期具有以下格式:dd.mm.yyyy
//Dateformatting
function parseDate (dateStr) {
var s1 = dateStr.split(" ");
var s1dat = s1[0].split(".");
return new Date(s1dat[2], s1dat[1], s1dat[0])
};
var dateArr = [];
//Occupation
d3.tsv("data.csv", function(error, data, tsv) {
datasetIn = data;
datasetIn.forEach(function(d) {
d.datum = parseDate(d.datum);
d.Patients = +d.Patients.replace(",", ".");
d.Beds= +d.Antal_vardplats.replace(",", ".");
});
for (index = 0; index < datasetIn.length; ++index) {
dateArr.push(datasetIn[index].datum);
}
var maxYear = d3.max(dateArr).getFullYear();
var maxDate = d3.max(dateArr);
})
答案 0 :(得分:0)
在JavaScript中月份值从零开始,从1月份的0开始到12月份的11月份。将表示九月的人类可读9传递给new Date()
应该为十月创建一个Date对象。
new Date("2015", "9", "7").toDateString(); // "Wed Oct 07 2015"
在解析人类可读的日期值时,对此进行调整应能为您提供正确的结果。