Подтвердить что ты не робот

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. Это кажется беспорядочным, и я уверен, что должен быть более простой способ делать вещи.

Приветствуются советы/предложения!

4b9b3361

Ответ 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());

Я делаю что-то очень похожее, чтобы получить дату текущего месяца без времени.