Мне нужно разобрать строку до даты, скажем givenDate
, до часового пояса EST. Кроме того, я должен взять текущую дату, скажем currentDate
в часовом поясе EST. Мой текущий часовой пояс IST (GMT + 5: 30).разница между двумя датами в java в часовом поясе «EST»
Если currentDate больше, чем givenDate, тогда мне нужно добавить день в currentDate.
Вот решение, которое я внедрил.
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/08/2016"));
Calendar currentDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
if(currentDate.get(Calendar.YEAR) > givenDate .get(Calendar.YEAR) ||
currentDate.get(Calendar.DAY_OF_YEAR) > givenDate.get(Calendar.DAY_OF_YEAR)){
currentDate.add(Calendar.DATE, 1);
}
System.out.println("Final date : "+df.format(currentDate.getTime()));
Есть ли лучшее решение для этого?
Кроме того, щекочут мой разум.
Рассмотрим фрагмент кода
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/07/2016"));
System.out.println(givenDate .get(Calendar.DATE)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_MONTH)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_YEAR)); //6
Почему я получаю 6 для ДАТЫ, DAY_OF_MONTH, DAY_OF_YEAR? Я бы ожидать они должны вернуться 7, как данная дата 7 дней с момента запуска Года 2016.
Но если добавить следующую строку после первой строки кода выше, выше указанных полей возвращающегося 7 Что может быть причиной этого?
df.setTimeZone(TimeZone.getTimeZone("EST"));
.
Обновите свое сообщение конкретными примерами, охватывающими все возможные случаи, показывающие входы и ожидаемые выходы. –