【发布时间】:2020-04-22 17:04:16
【问题描述】:
我想编写一个仅在一个月内可用的应用程序。我想在启动应用程序时检查它是否超过了给定日期(2020 年 5 月 22 日,但我不知道该怎么做。有人可以告诉我如何将当前时间与预设日期进行比较吗?
【问题讨论】:
-
这能回答你的问题吗? How to compare dates in Java?
我想编写一个仅在一个月内可用的应用程序。我想在启动应用程序时检查它是否超过了给定日期(2020 年 5 月 22 日,但我不知道该怎么做。有人可以告诉我如何将当前时间与预设日期进行比较吗?
【问题讨论】:
将此代码放入您应用的onCreate() 方法并更改日期。日期到期后将调用doSomething() 方法。
String expiryDateString = "22-May-2020"; // upcoming date
DateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date expiryDate = formatter.parse(expiryDateString);
if(System.currentTimeMillis() > expiryDate.getTime()){
// app is expired
doSomething();
}
但请注意,这不是一种安全的方法,因为可以更改系统时间和日期,并且此测试会失败。所以更好的方法是在服务器中使用标志并在每次应用启动时检查它。
【讨论】:
SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中有很多更好的地方。是的,您可以在 Android 上使用它。对于较旧的 Android,请参阅 How to use ThreeTenABP in Android Project。
创建一个包含当前时间的静态变量,并在程序启动时检查它(或者如果你需要,则在循环中检查它)
public class Main {
private static final long DATE_STARTED = 1587575414548;
if(DATE_STARTED + 2592000000 < System.currentTimeInMillis()) { // 2592000000 is 30 days in milliseconds
// Handle stuff here
}
}
【讨论】:
离开@JackChap77 的评论,如果你想找到当前时间,使用
new Date().getTime() 以毫秒为单位检索当前时间,然后将其存储在最终变量中。不过,请确保只使用一次,因为您不想在每次加载程序时都检索当前时间。
【讨论】: