0

我正在尝试获取以日期表示的值的十进制值。我的问题是我只需要日期中的时间,而不是实际日期本身。所以这里是我的 .json 数据的一部分:

var data = [
  {
    "Id":"1390794254991",
    "Tz":"Europe/Amsterdam",
    "From":"27. 01. 2014 4:44",
    "To":"27. 01. 2014 12:09",
    "Sched":"08. 02. 2014 5:24",
    "Hours":"7.430"
}]

所以基本上我想取“From”值并获得以十进制值返回的时间。我不认为使用Time Formatting将时间转换为十进制数,这只是对我来说似乎很难的值的拆分。你们中的任何人都知道如何实现这一目标吗?

谢谢,

卡斯

编辑:好的,我们开始吧。我做了一个JSFiddle来解决问题。因为我的日期中有一个 TIME (HH:MM),所以我的条形图中的矩形不会出现在 xAxis 中的特定日期。相反,它们在 xAxis 上的某一天和某个时间出现。

我只需要它是具体的日期,而不是日期和时间。

我想我必须在以下部分进行一些更改:

dataFiltered.forEach(function(d) {
         d.From = parseDate(d.From);
    });

实在看不懂是什么...

4

1 回答 1

3

使用 d3,您将构建一个时间解析器,给它一个要解析的字符串,然后返回一个 Date 对象。

var parser = d3.time.format('%d. %m. %Y %H:%M');
var date = parser.parse("05. 52. 2014 4:32");

然后你可以随心所欲地使用这个日期对象,包括

var hours = date.getHours() // 4
var minutes = date.getMinutes() // 32

但是,您的意思是您不想使用 d3(尽管您的问题被标记为 d3)?如果是这样,您还可以使用 RegExp:

var dateString = "05. 52. 2014 4:32";
var matches = dateString.match(/(\d?\d):(\d\d)$/);
// yields ["4:32", "4", "32"]

然后你可以通过

var hours = matches[1];
var minutes = matches[2]

或者

var hours = RegExp.$1;
var minutes = RegExp.$2

不过,无论哪种情况,RegExp 都会返回字符串,因此如果您要对它们进行定量处理,则需要将它们转换为数字:

var hours = parseInt(matches[1]);

或者更神秘的

var hours = +matches[1];
于 2014-02-05T18:18:05.253 回答