Как округлить время 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
и проще и дешевле