Я пытаюсь создать диапазон дат, охватывающий полный месяц, т.е.
У меня есть контрольная дата, и я пытаюсь создать на ее основе новую дату. У меня проблема с "endDate" ...Я пытаюсь создать диапазон дат, охватывающий полный месяц, т.е.
У меня есть контрольная дата, и я пытаюсь создать на ее основе новую дату. У меня проблема с "endDate" ...Я пытаюсь создать диапазон дат, охватывающий полный месяц, т.е.
[startDate; endDate]
Таким образом, у меня есть справочная дата, и я пытаюсь создать на ее основе новую дату. У меня проблема с "endDate", потому что я хочу, чтобы он был ближе к концу дня (т.е. 23:59:59).
Я использую следующий код:
public static Date previousMonthLastDate(Date referenceDate) {
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
calendar.setTime(referenceDate);
calendar.add(Calendar.MONTH, -1); // move to the previous month
int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, lastDay);
// set the time to be the end of the day
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
Этот код работает должным образом на эмуляторе Android . Однако запуск его на реальном телефоне дает неверную дату. Таким образом, я предполагаю, что это какая-то проблема с часовым поясом.
По телефону вместо того, чтобы сказать 31 августа 2010 года, отображается 01 сентября 2010 года. Это значение должно быть установлено после строки кода, которая устанавливает HOUR_OF_DAY равным 23.
Есть идеи?
Спасибо.