Получить все полные часы каждого дня года

Мне нужно получать / печатать в командной строке каждый полный час каждого дня данного года, например. 2011, но я изо всех сил пытаюсь закодировать его на Java.

Кто-нибудь когда-нибудь кодировал эту проблему?


person Tunc Jamgocyan    schedule 21.08.2012    source источник
comment
Наверное, тоже зависит от часового пояса.   -  person Thilo    schedule 21.08.2012
comment
да. ;) Есть ли что-то более конкретное, что вы хотите знать?   -  person Peter Lawrey    schedule 21.08.2012


Ответы (3)


Это должно работать:

final DateFormat df = DateFormat.getDateTimeInstance();
final Calendar c = Calendar.getInstance();
c.clear();
for (c.set(2011, Calendar.JANUARY, 1, 0, 0, 0);
     c.get(Calendar.YEAR) == 2011;
     c.add(Calendar.HOUR_OF_DAY, 1))
  System.out.println(df.format(c.getTime()));

Обратите внимание, например, на эту тонкость в выводе:

Oct 30, 2011 12:00:00 AM
Oct 30, 2011 1:00:00 AM
Oct 30, 2011 2:00:00 AM
Oct 30, 2011 2:00:00 AM
Oct 30, 2011 3:00:00 AM
person Marko Topolnik    schedule 21.08.2012
comment
Не могли бы вы также использовать c.add(c.HOUR_OF_DAY, 1); вместо? - person MadProgrammer; 21.08.2012
comment
Вау, +1 за новый вид циклов for - person Mazyod; 21.08.2012
comment
@Mazyod Kernighan и Ричи гордились бы мной :) - person Marko Topolnik; 21.08.2012

вы можете легко решить эту проблему, используя библиотеку joda-time:

    org.joda.time.Hours.hoursBetween(
        new org.joda.time.DateMidnight(2012,1,1).toLocalDate(), 
        new org.joda.time.DateMidnight(2013,1,1).toLocalDate()
      ).getHours();
person nilsmagnus    schedule 21.08.2012

Используйте Календарь и циклируйте день за днем, чтобы управлять «Строкой в ​​кавычках», как вам нравится, по необходимому параметру,

Вы можете поместить каждую строку дня (обычно через запятую) в файл

person cl-r    schedule 21.08.2012