Упрощенный формат. Почему Calendar.MONTH неправильно генерирует значение предыдущего месяца (т.е. декабрь 2015 г.) для января'16?
Я пытался получить значения за последние 12 месяцев текущего месяца, используя Simpledateformat. Но за предыдущий месяц (т.е. декабрь 2015 года) я всегда получаю декабрь 2016 года.
calendar.set (Calendar.MONTH, -1); Это должно вернуться в декабре 2015 года, но это не так.
Я не понимаю логику. Может кто-нибудь объяснить, пожалуйста. Большое спасибо за ваше время и помощь.
Мой код:
public static void main (String[] args) throws java.lang.Exception
{
SimpleDateFormat month_date = new SimpleDateFormat("MMM-YYYY");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, -1);
String month_name = month_date.format(calendar.getTime());
System.out.println("month_name : "+month_name);
}
Выход:
month_name : Dec-2016
2 ответа
Есть несколько проблем с кодом.
1) Вы должны использовать добавить calendar.add(Calendar.MONTH, -1);
вычесть месяц.
2) Интересно, что после этого он также напечатал бы вывод как month_name : Dec-2016
это потому что ваш SimpleDateFormat
есть проблема, т.е. вы упомянули год в качестве столицы Y
который Week year
меняя его на y
сделаю работу.
Вы можете обратиться к SimpleDateFormat
документация здесь.
Модифицированный код будет:
public static void main (String[] args) throws java.lang.Exception
{
SimpleDateFormat month_date = new SimpleDateFormat("MMM-yyyy");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
String month_name = month_date.format(calendar.getTime());
System.out.println("month_name : "+month_name);
}
Чтобы выложить месяцы, вы можете сделать это:
calendar.add(Calendar.MONTH, -1);
Надеюсь, это поможет вам.