【发布时间】:2011-05-10 10:16:55
【问题描述】:
我正在开发一个基于 java 中的日期和时间的应用程序。在这个应用程序中,我的用户每小时只能录制一次视频。所以为此我存储了上一次使用我的应用程序。
所以当用户下次启动我的应用程序时,我正在比较时间,如果时间间隔超过一小时,我必须允许我的用户记录,否则我不应该允许。如何在java中有效地比较小时和分钟?
【问题讨论】:
我正在开发一个基于 java 中的日期和时间的应用程序。在这个应用程序中,我的用户每小时只能录制一次视频。所以为此我存储了上一次使用我的应用程序。
所以当用户下次启动我的应用程序时,我正在比较时间,如果时间间隔超过一小时,我必须允许我的用户记录,否则我不应该允许。如何在java中有效地比较小时和分钟?
【问题讨论】:
获取系统时间
long time = System.currentTimeMillis();
并将新时间与旧时间进行比较。一小时意味着相差 1000 * 60 * 60 毫秒
【讨论】:
60 * 60 * 1000。或3600 * 1000 ;) 注意:这不受夏令时变化的影响。
来自@Dalino 的回答,您可以使用TimeUnit 枚举类进行时间转换。
long now = System.currentTimeMillis();
long lastVisit = ...; // in milliseconds
if(TimeUnit.MILLISECONDS.toHours(now - lastVisit) > 0) {
// allow
}
【讨论】:
为什么不只存储它们退出(或其他)的时间,然后在启动时读取时间,添加一个小时,然后与当前时间进行比较?
您不需要比较实际的小时数和分钟数 - 只需比较当时和现在之间的持续时间。
我个人建议对所有 Java 日期/时间工作使用 Joda Time,但在这种情况下,您可以只使用 Date,并添加一个小时的毫秒数。请注意,您绝对应该存储 UTC 日期/时间而不是本地日期/时间,否则夏令时更改等会搞砸。
【讨论】: