Вам необходимо также указать часовой пояс для SimpleDateFormat - в настоящее время это анализирует полночь местное время , которое заканчивается как 8:00 UTC.
TimeZone utc = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(utc);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setTimeZone(utc);
Date finalTime = null;
try
{
finalTime = df.parse("01/01/2100");
} catch (ParseException e)
{
e.printStackTrace();
}
calendar.setTime(finalTime);
Как всегда, я бы лично порекомендовал использовать Joda Time , который в целом гораздо более эффективен. Буду рад перевести ваш пример на Joda Time, если хотите.
Кроме того, я вижу, что вы возвращаете calendar.getTime()
- это то же самое, что возвращать finalTime
, как только вы его вычислили.
Наконец, просто поймать ParseException
и продолжать, как будто этого не произошло, очень плохая идея. Я надеюсь, что это просто пример кода, и он не отражает ваш реальный метод. Точно так же я предполагаю, что на самом деле вы будете анализировать какой-то другой текст - если вы этого не сделаете, то, как сказал Эял, вам следует просто вызывать методы на Calendar
напрямую. (Или снова используйте Joda Time.)