Есть коллекция сущностей (условно событие), которых есть поле
Long time; // System.currentTimeInMillis()
В этом поле хранится время в UnixTime-формате. Мне нужно подсчитать количество событий, произошедших за дни. То есть в идеале на выходе хочется получить Map<Date, Integer>, где ключ - день (просто день, без времени), а значение - количество событий.
И что-то у меня алгоритмический затык. Чую, что нужно написать функцию для stream().map(), которая на вход принимает UnixTime, а на выходе дает дату без времени. Но при этом хочется ещё и так, что бы сравнение даты было только по год-месяц-день, чтобы можно было потом сгруппировать Collectors.groupBy().
Собственно, вопрос - есть готовый класс, который хранит только дату (без времени) и/или у которого реализован equals с учетом даты без времени. Или придется писать свою обертку?
Алексей Тен, System.currentTimeInMillis() возвращает the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC, так что сутки - это 86400000 миллисекунд.
А проще ли перейти на DateTime API из Java 8? Там и время в нормальном виде, и с днями можно работать, с отрезками времени. Да и часовые пояса учитываются.
Unix-time - имеете ввиду количество мл.сек. с 01.01.1970?
Тогда просто разделите значение на количество миллисекунд в сутках (86400000), получите тот же unix-time только в днях.