【问题标题】:Get all full hours of every day of a year获取一年中每一天的所有完整时间
【发布时间】:2012-08-21 09:46:16
【问题描述】:

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

有人编码过这个问题吗?

【问题讨论】:

  • 也可能与时区有关。
  • 是的。 ;) 有什么更具体的你想知道的吗?

标签: java date calendar hour


【解决方案1】:

这应该可行:

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

【讨论】:

  • 你也可以使用 c.add(c.HOUR_OF_DAY, 1);代替?
  • 哇,为新型 for 循环 +1
  • @Mazyod Kernighan 和 Ritchie 会为我感到骄傲的 :)
【解决方案2】:

您可以使用 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();

【讨论】:

    【解决方案3】:

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

    你可以把每一行day(通常用逗号分隔)放在一个文件中

    【讨论】:

      猜你喜欢
      • 2019-07-31
      • 2021-06-11
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      相关资源
      最近更新 更多