【问题标题】:What's the best way to represent a time period in Java?在 Java 中表示时间段的最佳方式是什么?
【发布时间】:2011-05-27 13:12:30
【问题描述】:

在 Java 中表示时间段的最佳方式是什么?我可以使用 2 个 Date 对象还是有更好的方法?

即整个 4 月、7 月的第 3 周、1 月至 3 月等。

【问题讨论】:

  • 你的意思是代表什么?像 2011-04-01 到 2011-07-09?
  • @RMT 这正是我的意思

标签: java date


【解决方案1】:

我看到答案很老了。

Java 8 开始,我们可以使用部分基于Joda Time 的原生Java.Time,并且可以非常轻松地对日期进行操作。

看看PeriodDurationLocalDate

【讨论】:

  • 好吧,但是 Joda Time 的 Interval 比使用新的 Java 8 对象更具表现力......没有什么可以与之相比的。您必须使用 2 个时间对象(就像我们过去所做的那样)或一个开始日期和一个句点......没办法
【解决方案2】:

当涉及到时间 + Java 时,这里是 Joda 的常用链接:

http://joda-time.sourceforge.net/api-release/org/joda/time/Period.html

编辑:这个特定问题的相关链接是http://joda-time.sourceforge.net/api-release/org/joda/time/Interval.html

【讨论】:

  • 谢谢 Waldheinz,我想我没有正确解释自己,我看了 Joda(不知道),我发现了 Interval 类,它代表了我的需要。跨度>
  • 对不起,我挖链接的时候有点懒。更新了这个。
  • @Waldheinz,我知道 Joda 很棒而且一切都很好,但是这个建议是不是有点“过头”了?使用标准 Java 库有什么问题?
  • @mre 标准 Java 类并没有什么问题,但我认为它总是有一个糟糕的 API(而且它的许多方法今天已被弃用)。所以我的建议与 Joda 一起使用,当您的应用程序增长时,您会很高兴您开始使用它。但这真的是一种味道。
  • @Waldheinz,除非万不得已,否则我宁愿不使用第三方库。 :)
【解决方案3】:

Joda Time 解决您所有的日期/时间问题。它有一个数据范围类型。

【讨论】:

    【解决方案4】:

    如果您出于某种原因想避免使用 Joda,那么编写一个包含一对日期(或底层 Long 值)的类就可以了,但是您需要编写比较范围或比较所需的任何方法确定日期是否在某个范围内等。

    【讨论】:

    • 您知道如何将长值转换为更有用的信息,例如两个日期之间的天数等吗?
    • 我建议阅读 JodaTime 源代码!根据您的定义,天数取决于时区,因此计算起来一点也不简单。
    【解决方案5】:

    如果您需要使用 2 个不同的日期,请使用 2 个不同的日期并使用 SimpleDateFormat。使用起来非常简单。

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    format.parse(new Date());
    

    【讨论】:

      【解决方案6】:

      如果我明白你想要什么。您可以简单地使用两个时间戳。另一种时间戳和周期时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-21
        • 2017-12-14
        • 2012-01-27
        • 2018-06-24
        相关资源
        最近更新 更多