неожиданное поведение с грегорианским календарем с датами BC

Я бы хотел :

  • установить дату до 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 и System - я на Android 5.1.1

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

java,gregorian-calendar,android-5.1.1-lollipop,

1

Ответов: 0

неожиданное поведение с грегорианским календарем с датами BC

Я бы хотел :

  • установить дату до 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 и System - я на Android 5.1.1

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

01Java, григорианский-календарь, андроид-5.1.1-леденец,
Похожие вопросы