我需要编写一个只能每24小时执行一次的方法。它抓取一个名为“lastCollection”的字符串,然后将其解析为某种时间对象。然后它应该获得当前时间,并检查它是否与“lastcollection”有24小时的差异。如果是这样,它应该执行一些代码,并将lastCollection设置为新的可读时间字符串。这是最好的方法吗?
答案 0 :(得分:1)
这是通过某种东西调用还是需要每24小时运行一次?
如果可能,你可以睡觉。我需要一个代码示例来向您展示如何适应它。
如果每天一次,则按计划
在方法开始时获取时间
执行方法
获得新的时间
获得开始时间和当前时间的差异
在剩余的时间内休息,直到第二天的同一开始时间。
OR
需要在执行前检查
在方法开始时获取时间保存到变量
每次调用此方法时,请检查值的差异,如分钟(见下文)
如果它大于24,则重复方法
日期差异可以这样做:
Date lasttimeran = null;
Date now = null;
long diff = now.getTime() - lasttimeran.getTime();
long diffMinutes = diff / (60 * 1000);
//If block to check if it has been long enough >= ensures a diff of exactly 24 hours will still trigger the method to be ran
if (diffMinutes >= 1440) {
//Do Something
}
else{
//Do Nothing
}
答案 1 :(得分:0)
Calendar expCal = Calendar.getInstance();
while (true) {
expCal.add(Calendar.HOUR, 24);
Date expirationDate = expCal.getTime();
Date currentDate = new Date();
if (currentDate.compareTo(expirationDate) == 0)
//Do your Work here
expCal = Calendar.getInstance();
}