Я новичок в java, и я пытаюсь получить весь 7-й день в 2009 году. Я немного смущен тем, как это сделать. Ниже мой код
public class Main {
public static void main(String[] args) {
System.out.println("WELCOME TO MY CALENDER CLASS");
Calendar calendar = Calendar.getInstance();
calendar.set(DAY_OF_MONTH,7);
calendar.set(Calendar.YEAR,2009);
for(int i =1; i <= 12; i++){
calendar.set(DAY_OF_MONTH,i);
System.out.println(calendar.getTime());
}
}
}
Обновление: это ниже мой результат
Sun Mar 01 23:41:14 GMT 2009
Mon Mar 02 23:41:14 GMT 2009
Tue Mar 03 23:41:14 GMT 2009
Wed Mar 04 23:41:14 GMT 2009
Thu Mar 05 23:41:14 GMT 2009
Fri Mar 06 23:41:14 GMT 2009
Sat Mar 07 23:41:14 GMT 2009
Sun Mar 08 23:41:14 GMT 2009
Mon Mar 09 23:41:14 GMT 2009
Tue Mar 10 23:41:14 GMT 2009
Wed Mar 11 23:41:14 GMT 2009
Thu Mar 12 23:41:14 GMT 2009
Есть ли проблема с вашим кодом?
Пожалуйста, точно опишите, чего вы пытаетесь достичь и почему предоставленный вами код не работает так, как вы ожидали. Пробовали ли вы просмотреть свой код в отладчике, чтобы увидеть, где он отличается от ожидаемых результатов?
Java версии 11.02 @LaksithaRanasingha
Я хочу получить весь 7-й день 2009 года @Jason
@EdemRobin мы знаем, что вы хотите получить все 7-е место в 2009 году. Вы также можете попробовать описать результат вашего текущего кода.
@EdemRobin Вы имеете в виду «каждый 7-й день в году» или «7-й день каждого месяца в году»?
В цикле вы устанавливаете DAY_OF_MONTH вместо MONTH (который, кстати, начинается с 0).
7-го числа каждого месяца в году @MadProgrammer
@howie Ниже приведен мой результат Вс 01 марта 23:41:14 GMT 2009 Пн 02 марта 23:41:14 GMT 2009 Вт 03 марта 23:41:14 GMT 2009 Ср 04 марта 23:41:14 GMT 2009 Чт 05 марта 23:41:14 GMT 2009 Пт 06 мар 23:41:14 GMT 2009 Сб 07 мар 23:41:14 GMT 2009 Вс 08 мар 23:41:14 GMT 2009 Пн 09 мар 23:41:14 GMT 2009 Вт 10 мар 23:41:14 GMT 2009 Ср 11 марта 23:41:14 GMT 2009 Чт 12 марта 23:41:14 GMT 2009
Итак, вы хотите 7 января, 7 февраля... 7 декабря?
Спасибо @MichaelButscher за указание на мою ошибку. Я меняю DAT_OF_MONTH на MONTH, и это работает.




Хорошо, если вы начинаете с 1 января, вот простой пример для вашего дела. Надеюсь, код Java1.8 вам понятен.
public static void main(String[] args) {
// create two localdate start of a year instances, one for current year and one for next year, 2009 and 2010 respectively
LocalDate thisYear = LocalDate.of(2009, Month.JANUARY, 1);
LocalDate nextYear = LocalDate.of(2010, Month.JANUARY, 1);
// used only for counting number of every seventh day in a year
int i=0;
// while we are not in the next year, 2010
while (thisYear.isBefore(nextYear)) {
i++;
// print current date
System.out.println(i+" " + thisYear.toString());
// add a week or seven days to our thisYear instance and loop thru again
thisYear = thisYear.plusWeeks(1);
}
}
Проблема с вашим кодом заключается в том, что в цикле for вы устанавливаете день, а не месяц для объекта Calendar.
Итак, измените это:
for(int i = 0; i < 12; i++){
calendar.set(Calendar.MONTH, i);
System.out.println(calendar.getTime());
}
Цикл начинается с 0 и доходит до 11, потому что месяцы отсчитываются от 0.
Если вы можете использовать LocalDate, ваш код будет намного проще и эффективнее:
System.out.println("WELCOME TO MY CALENDER CLASS");
LocalDate date;
for(int i = 1; i <= 12; i++){
date = LocalDate.of(2009, Month.of(i), 7);
System.out.println(date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
}
какую версию Java вы используете?