Мне нужно написать функцию, которая принимает java.util.Date
и удаляет часы, минуты и миллисекунды из нее ИСПОЛЬЗОВАНИЕ JUST MATH (нет форматов даты, нет объектов Calendar и т. Д. .):Как удалить Hour, Minute и Second из временной отметки Epoch
private Date getJustDateFrom(Date d) {
//remove hours, minutes, and seconds, then return the date
}
целью этого метода является то, чтобы получить дату из значения миллисекунды, без времени.
Вот что я до сих пор:
private Date getJustDateFrom(Date d) {
long milliseconds = d.getTime();
return new Date(milliseconds - (milliseconds%(1000*60*60)));
}
Проблема заключается в том, это только удаляет минуты и секунды. Я не знаю, как удалить часы.
Если я делаю milliseconds - (milliseconds%(1000*60*60*23))
, он возвращается в 23:00 часов предыдущего дня.
EDIT:
Вот альтернативное решение:
public static Date getJustDateFrom(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
return c.getTime();
}
Будет ли это решение повлияет на разницу во времени зоны между клиент/серверной стороне моего приложения?
Какова цель этого метода? Если вы хотите только день, месяц, год, используйте «Календарь». –
всегда ли он до 23:00 в предыдущий день? Если это так, не можете ли вы добавить 1 час? – Cruncher
Я читал, что объект «Календарь» учитывает часовой пояс. У меня есть веб-приложение, которое получает этот объект Date от клиента, и я не хочу, чтобы он зависел от часовых поясов. – Churro