Javascript 只有一小时

Javascript 只有一小时,javascript,datetime,d3.js,Javascript,Datetime,D3.js,我使用D3V3解析一些具有以下格式的日内数据: time,value 09:00,1 09:05,2 09:10,3 ... 所以我设置了一个解析变量,如下所示: var parseTime = d3.time.format("%H:%M").parse; 我映射csv调用范围内的数据: d3.csv("my_data.csv", function(error, rawData) { var data = rawData.map(function(d) { retur

我使用D3V3解析一些具有以下格式的日内数据:

time,value
09:00,1
09:05,2
09:10,3
...
所以我设置了一个解析变量,如下所示:

var parseTime = d3.time.format("%H:%M").parse;
我映射csv调用范围内的数据:

d3.csv("my_data.csv", function(error, rawData) {
    var data = rawData.map(function(d) {
        return {y_value: +d.value, date: parseTime(d.time)}
    });

    console.log(data)
}
在控制台里,我发现了一些奇怪的东西。我得到的不是小时,而是完整的日期、星期几、月份,甚至时区

data->
array[79]
    0:Object->
        date: Mon Jan 01 1900 09:00:00 GMT+0000
        y_value: 1
日期需要如此完整吗?我想这可以解释为什么我会在1月1日星期一结束,似乎是某种违约。但是,根据,
“%H:%M”
用于小时和分钟。我可以发誓我做得那么正确

我知道有些地方不太正确,因为我的折线图出现了错误:

error: <path> attribute d: expected number "MNaN"
错误:属性d:预期数字“MNaN”
我最好的猜测是日期指定得太多,
axis()
需要一个小时格式

我的问题是:为什么我的数据不被解析为仅小时?我应该从解析端更改它吗?如果这不是一个选项,我可以让x域读取日期的一部分(小时和分钟部分)吗

更新:这里有一个例子来进一步说明我的困境。

当你说

为什么我的数据不被解析为仅小时

。。。很明显,这里有一个基本的误解。让我们澄清一下

什么是日期? 简言之,约会是一个时间的瞬间。可以是现在,也可以是两个月前,或者是我儿子出生的那天,或者是下一个圣诞节,或者是苏格拉底喝下铁杉的那一刻。没关系。需要了解的是,所有这些日期都有一个世纪、十年、一年、一个月、一天、一小时、一分钟、一秒、一毫秒等等。。。(当然,这些名称是可以更改的约定)

因此,只有一个小时或一小时一分钟的约会是没有意义的

解析和格式化 当解析字符串时,您创建了一个日期对象。如上所述,date对象对应于时间中的某个时刻,它将具有年、月、小时、时区等。。。如果字符串本身缺少一些信息,例如年份,它将默认为某个值

看看这个演示,我们将使用正确的说明符将字符串解析为日期对象:

var string=“09:00”;
var parser=d3.timeParse(“%H:%M”);
var date=解析器(字符串);
log(“日期对象为:“+date”)

Hi Arash-.parse将返回一个日期对象,如果传入数据中未指定,则默认为01/01/1900。这是可以的,但是您需要共享您的缩放和路径函数的代码,以便我们可以看到错误所在。事实上,没有缩放和线生成器,我们无法找到问题。然而,我相信你这里的主要问题是概念上的。。。看看我的答案。你的答案把事情弄清楚了很多,我确实误解了日期格式的工作原理。感谢您的详细介绍。我已经用一个极简主义块更新了这篇文章,以供参考。我想说我正确地遵循了你的时间格式化过程,但我仍然得到了路径错误。你这里的问题更简单:范围必须是数组。以下是更新的bl.ocks: