3

我需要在给定年份的每一天的每一小时都在命令行上获取/打印,例如 2011 年,但我正在努力用 Java 对其进行编码。

有没有人编码过这个问题?

4

3 回答 3

7

这应该有效:

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
于 2012-08-21T09:54:04.533 回答
1

您可以使用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();
于 2012-08-21T10:37:56.153 回答
0

使用日历,并日复一日地循环以根据需要的参数管理“引用的字符串”,

您可以将每一行天(通常用逗号分隔)放在一个文件中

于 2012-08-21T09:53:12.113 回答