【问题标题】:Compare hours and minutes比较小时和分钟
【发布时间】:2011-05-10 10:16:55
【问题描述】:

我正在开发一个基于 java 中的日期和时间的应用程序。在这个应用程序中,我的用户每小时只能录制一次视频。所以为此我存储了上一次使用我的应用程序。

所以当用户下次启动我的应用程序时,我正在比较时间,如果时间间隔超过一小时,我必须允许我的用户记录,否则我不应该允许。如何在java中有效地比较小时和分钟?

【问题讨论】:

    标签: java android datetime


    【解决方案1】:

    获取系统时间

    long time = System.currentTimeMillis();
    

    并将新时间与旧时间进行比较。一小时意味着相差 1000 * 60 * 60 毫秒

    【讨论】:

    • +1:我更喜欢写60 * 60 * 1000。或3600 * 1000 ;) 注意:这不受夏令时变化的影响。
    【解决方案2】:

    来自@Dalino 的回答,您可以使用TimeUnit 枚举类进行时间转换。

    long now = System.currentTimeMillis();
    long lastVisit =  ...; // in milliseconds
    if(TimeUnit.MILLISECONDS.toHours(now - lastVisit) > 0) {
        // allow
    } 
    

    【讨论】:

      【解决方案3】:

      为什么不只存储它们退出(或其他)的时间,然后在启动时读取时间,添加一个小时,然后与当前时间进行比较?

      您不需要比较实际的小时数和分钟数 - 只需比较当时和现在之间的持续时间。

      我个人建议对所有 Java 日期/时间工作使用 Joda Time,但在这种情况下,您可以只使用 Date,并添加一个小时的毫秒数。请注意,您绝对应该存储 UTC 日期/时间而不是本地日期/时间,否则夏令时更改等会搞砸。

      【讨论】:

        【解决方案4】:

        我会使用 Joda Period:看看 here

        【讨论】:

        • +0:我称之为 The Over Kill 9000 Plus Extreme ;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        相关资源
        最近更新 更多