D3js получает только часть значения и преобразует его в десятичное
Я пытаюсь получить десятичное значение для значения, выраженного в дате. Моя проблема в том, что мне нужно только время в дате, а не сама дата. Итак, вот часть моих данных.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"
}]
Так что в основном я хотел бы взять значение "От" и получить только время, возвращаемое в десятичном значении. Я не думаю, что преобразование времени в десятичное число с помощью Форматирования времени, это просто разделение значения, которое мне кажется довольно сложным. Кто-нибудь из вас, ребята, знает, как этого достичь?
Спасибо,
Cas
Редактировать: Хорошо, здесь мы идем. Я сделал JSFiddle, чтобы прояснить ситуацию. Поскольку в моем свидании есть ВРЕМЯ (ЧЧ: ММ), прямоугольники в моей диаграмме не появляются в определенный день в оси x. ВМЕСТО они выходят в день И время на оси.
Мне просто нужно, чтобы это была конкретная дата, а не дата и время.
Я думаю, что я должен изменить что-то в следующей части:
dataFiltered.forEach(function(d) {
d.From = parseDate(d.From);
});
Просто не понимаю, что...
1 ответ
С 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];