Javascript Date - установить дату, игнорируя время?
У меня есть куча объектов, каждая из которых имеет временную метку, которую я хочу группировать по дате, в объект JSON. Конечная цель заключается в следующем:
myObject = {
"06/07/2012" : [
{
"timestamp" : "07/06/2012 13:30",
...
},
{
"timestamp" : "07/06/2012 14:00",
...
}
],
"07/07/2012 [...]
}
Чтобы получить дату, я тестирую каждый объект timestamp и используя:
var visitDate = new Date(parseInt(item.timestamp, 10));
visitDate.setHours(0);
visitDate.setMinutes(0);
visitDate.setSeconds(0);
.. то я использую это для хранения в качестве имени для объекта JSON. Это кажется беспорядочным, и я уверен, что должен быть более простой способ делать вещи.
Приветствуются советы/предложения!
Ответы
Ответ 1
Как насчет .toDateString()
?
В качестве альтернативы используйте .getDate()
, .getMonth()
и .getYear()
?
На мой взгляд, если вы хотите группировать вещи по дате, вы просто хотите получить доступ к дате, а не задавать ее. Имея определенный способ доступа к полю даты, вы можете сравнивать их и группировать вместе, нет?
Ознакомьтесь со всеми интересными методами Date здесь: MDN Docs
Изменить: если вы хотите сохранить его как объект даты, просто выполните следующее:
var newDate = new Date(oldDate.toDateString());
Конструктор Date довольно разбирается в синтаксическом анализе строк (хотя и не без тонны предостережений, но это должно работать довольно последовательно), поэтому взятие старой даты и печать ее до даты без какого-либо времени приведет к тому же эффекту был в оригинальном посте.
Ответ 2
Если вы не возражаете против создания дополнительного объекта даты, вы можете попробовать:
var tempDate = new Date(parseInt(item.timestamp, 10));
var visitDate = new Date (tempDate.getUTCFullYear(), tempDate.getUTCMonth(), tempDate.getUTCDate());
Я делаю что-то очень похожее, чтобы получить дату текущего месяца без времени.