Календарь неправильное время после смены часового пояса

Мне нужно получить дату 5 месяцев назад из текущего с первым днем ​​месяца, я использую этот код для этого:

val date = Calendar.getInstance()
date.add(Calendar.MONTH, -5)
date.set(Calendar.DAY_OF_MONTH, 1)
date.set(Calendar.HOUR_OF_DAY, 0)
date.set(Calendar.MINUTE, 0)
date.set(Calendar.SECOND, 0)

Нормально работает нормально, делать из 2018-08-10T15:46:53+02:00 нужен 2018-03-01T00:00:00+01:00

Но если я изменю часовой пояс на GMT + 7, возобновлю приложение и запустил этот код, он даст мне странный результат за несколько дней до необходимости: 2018-02-28T20:00:00+01:00.

Если я удаляю приложение из памяти и снова запускаю его после изменения часового пояса, все работает нормально.

0
0
40
1

Ответы 1

Используйте библиотеку JodaTime, тогда ваш код будет выглядеть так:

DateTime now = DateTime.now();
DateTime fiveMonthsAgo= now.minusMonths(5);

В противном случае при необходимости вы должны вручную вычесть год.

Другие вопросы по теме