【问题标题】:Get total of hours on a day [duplicate]获取一天的总小时数[重复]
【发布时间】:2019-11-07 18:06:20
【问题描述】:

使用 Java,我将整数 DAYS 解析为 HOURS。

看起来像这样:

float hours = myvardays*24;

它有效,但常量 24 是 magic number,最好避免。

Calendar、Date 或任何其他变量是否有任何常量来获取一天中的总小时数 (24)?或者可能是一种方法?

我只对通用的 24 小时制感兴趣,而忽略了诸如夏令时 (DST) 等导致其他白天长度的异常情况。

【问题讨论】:

  • 我认为该链接在 java API 中没有解决方案
  • 你可以在你的代码中自我声明为常量
  • 您是否担心夏季时间的过渡?那些日子有 23 或 25 小时
  • 不,我不是。 @大卫齐默尔曼
  • @Vrian7 将说明添加为对您的问题的编辑,而不是作为评论。我在这里为你这样做了。

标签: java date parsing calendar


【解决方案1】:

我们不要去重新发明东西,这一切都融入了 JDK:

Java 8 及更高版本

Duration.ofDaystoDays 方法一起使用。

long hours = Duration.ofDays(myvardays).toHours(); // Java 8+

Java 5、6 和 7

使用TimeUnit 枚举。

long hours = TimeUnit.DAYS.toHours(myvardays); // Java 5+

【讨论】:

    【解决方案2】:

    在 JDK 8 中,您有 Duration 类,您可以在其中执行时间单位之间的转换。

    例子:

    Duration.ofDays(1).toHours() //24hs
    Duration.ofHours(1).toMinutes() //60 minutes
    

    【讨论】:

      【解决方案3】:

      我不知道 Java 标准库中有什么可以完全满足您的需求。

      但是,如果您的计算中有静态数字,则确实没有理由删除它们。除非您觉得它们将来会发生变化,或者如果应用程序的需求发生变化(例如在火星上,一天中的小时数可能不同),它们需要在许多地方进行更新

      人们可能会说不清楚到底发生了什么(为什么是 24,哦,对了......)。您可能希望创建一个包含您自己的常量且名称清晰的小类,以使代码更具可读性。

      例如:

      public final class TimeIntervals {
          // ...
          public static final int HOURS_IN_DAY = 24;
          public static final int DAYS_IN_WEEK = 7;
          //...
      }
      

      然后把它当作

      float hours = days * TimeIntervals.HOURS_IN_DAY;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        相关资源
        最近更新 更多