Неожиданное поведение с григорианским календарем с датами до нашей эры

Мне бы хотелось:

  • установить дату до 70 г. до н.э.
  • затем отнимите 2 года
  • Я ожидаю, что будет новая дата со значением: 72 г. до н.э.

Но я получаю 68 г. до н.э.

Вот мой код:

GregorianCalendar g1 = new GregorianCalendar();
g1.set(GregorianCalendar.YEAR, 70);
g1.set(GregorianCalendar.MONTH, 11);
g1.set(GregorianCalendar.DAY_OF_MONTH, 1);
g1.set(GregorianCalendar.ERA, GregorianCalendar.BC);
System.out.println(g1.toString()); 
g1.add(GregorianCalendar.YEAR,-2);
System.out.println(g1.toString()); 

Конечно, я мог бы просто изменить -2 на 2, и это будет работать, но, делая то же самое с датами в AD, это работает противоположным образом.

Как правильно вычесть годы из gregorianCalendar независимо от ERA?

Дополнительная информация о JDK и системе- я нахожусь на Android 5.1.1

Кажется, проблема только в Android?

0 ответов

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