Как округлить время Unix до начала текущего дня

Нужно округлить Unix-timestamp до начала текущего дня т.е. до 00:00 . Например это - 1578747600 (Sat, 11 Jan 2020 13:00:00 +0000) нужно превратить в это 1578700800 (Sat, 11 Jan 2020 00:00:00 +0000)


Ответы (2 шт):

Автор решения: Tiarait

Можно воспользоваться import java.util.Calendar; и установить конкретное время

Calendar now = Calendar.getInstance();
//Устанавливаем день и месяц для конкретной даты, если нужно
now.set(Calendar.MONTH, 0);//Jan
now.set(Calendar.DAY_OF_MONTH, 11);
//Округляем время до 00:00:00
now.set(Calendar.HOUR, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);

Результат

System.out.println(now.getTime());
System.out.println(now.getTimeInMillis() / 1000);//Unix time

Sat Jan 11 00:00:00 UTC 2020
1578700800
→ Ссылка
Автор решения: Barmaley

Можно вспомнить старые времена и посчитать попроще:

long timestamp = 1578747600;
long oneDay = 24*60*60; //86400 - количество секунд в сутках
long startOfDay = (timestamp/oneDay)*oneDay; //1578700800 

и проще и дешевле

→ Ссылка