2013-08-22 97 views
-2

我需要编写一个方法,每24小时只能执行一次。它抓取一个名为“lastCollection”的字符串,然后将其解析为某种时间对象。然后它应该获得当前时间,并检查它是否与“lastcollection”有24小时的差异。如果是这样,它应该执行一些代码,并将lastCollection设置为新的可读时间字符串。什么是最好的方式去做这件事?检查是否24小时

+2

抓住笔和纸,然后获得编码! – rocketboy

+0

使用系统时间可以吗?如果是这样,请使用它。 – keyser

+0

'日历'是你的朋友。大多数日期操作已被弃用(很难确定它们是否会很快被删除),但“日历”类提供了许多有趣的方法来处理日期。此外,要在'字符串'和'日期'之间工作,请使用单一日期格式。 – Gamb

回答

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 
} 
+0

这是一种方法,由其他东西调用:) 感谢您的帮助 – arxenix

+0

然后,你会想要做一个日期检查对上一次运行和当前时间,我在示例2 menton你可以编辑你的问题以及。如果你包含代码并提及更多人愿意参与的小事情,祝你好运! – sealz

+0

好的,我认为我的工作。谢谢!另外,我是这个网站的新手 – arxenix

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(); 

    } 
相关问题