2016-12-26 3 views
2

У меня есть следующий фрагмент кода.Установка года в календаре

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/YYYY HH:mm"); 
Calendar cal = Calendar.getInstance(); 
cal.clear(); 
cal.set(Calendar.YEAR, 2016); 
cal.set(Calendar.MONTH, 11); 
cal.set(Calendar.DAY_OF_MONTH, 31); 
cal.set(Calendar.HOUR_OF_DAY, 22); 
Date start = cal.getTime(); 
System.out.println(dateFormat.format(start)); 
cal.set(Calendar.YEAR, 2017); 
cal.set(Calendar.MONTH, 0); 
cal.set(Calendar.DAY_OF_MONTH, 1); 
cal.set(Calendar.HOUR_OF_DAY, 5); 
Date end = cal.getTime(); 
System.out.println(dateFormat.format(end)); 

Он печатает:

31/12/2016 22:00 
01/01/2016 05:00 

Я ожидаю, что год второго дня является 2017. Что происходит? Я использую Java 1.7.

+0

Какова ваша 'датаформат'? –

+1

Я получил '31-12-2016 22: 00' и' 01-01-2017 05: 00' – GurV

+1

Я только что запустил ваш код, и он кажется прекрасным, напечатал 2017, без проблем. Можете ли вы обновить код в полной версии? может быть, что-то вне этого может влиять? как нить? – Josh

ответ

2

правильный формат даты должен быть dd/MM/yyyy HH:mm, не dd/MM/YYYY HH:mm, обратите внимание на нижний регистр y.

С этим он работает правильно.

От docs:

у Год
Y Неделя год

Объяснение разницы между годом и неделя года (с here):

Через неделю года это год, когда все недели в году целые недели. [...] В принципе, это гарантирует, что программа, работающая над данными недели , не будет переходить между годами. [...] это также означает, что начало года может начаться не с первого января.

+0

Это работает. Спасибо. От чтения документов я не мог понять, что такое «Недельный год». Вы хотите уточнить? – Auberon

+0

@Auberon добавил пояснения –

-1

Это прекрасно работает со следующими данными форматом.

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm"); 
+0

это зависит от вас. как вы будете использовать свой формат формата даты. я просто привел пример, потому что вы не упомянули формат данных в своем вопросе. пожалуйста здравый смысл. – SujitKumar

Смежные вопросы