检查当前时间是否超过“last_updated”时间的一小时

时间:2012-07-18 00:21:04

标签: java android time

在我的Android应用中,我想只重新导入我的数据,如果它自上次导入至少X小时。

我将这个格式的last_updated时间存储在我的sqlite数据库中:2012/07/18 00:01:40

我怎样才能获得“从那时起的小时”或类似的东西?

到目前为止我的代码:

package com.sltrib.utilities;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateHelper
{

  public static String now()
  {
      Calendar currentDate = Calendar.getInstance();
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
      String dateNow = formatter.format(currentDate.getTime());
      //System.out.println("Now the date is :=>  " + dateNow);
      return dateNow;
  }

  public static int hoursAgo(String datetime)
  {
      //return the number of hours it's been since the given time
      //int hours = ??
      //return hours;
  }

}

2 个答案:

答案 0 :(得分:8)

你想要在两个CalendarDate之间进行数学运算。

注意:不推荐使用Date的各个方面,请参阅下面的Calendar

以下是使用Date的示例:

public static int hoursAgo(String datetime) {
    Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse(datetime); // Parse into Date object
    Date now = Calendar.getInstance().getTime(); // Get time now
    long differenceInMillis = now.getTime() - date.getTime();
    long differenceInHours = (differenceInMillis) / 1000L / 60L / 60L; // Divide by millis/sec, secs/min, mins/hr
    return (int)differenceInHours;
}

此处涉及一些try/catch块(您应该使用throws处理这些块),但这是基本想法。

修改:由于Date的某些部分已弃用,因此使用Calendar的方法相同:

public static int hoursAgo(String datetime) {
    Calendar date = Calendar.getInstance();
    date.setTime(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse(datetime)); // Parse into Date object
    Calendar now = Calendar.getInstance(); // Get time now
    long differenceInMillis = now.getTimeInMillis() - date.getTimeInMillis();
    long differenceInHours = (differenceInMillis) / 1000L / 60L / 60L; // Divide by millis/sec, secs/min, mins/hr
    return (int)differenceInHours;
}

答案 1 :(得分:0)

您也可以直接在查询上执行此操作。看看这个问题,有一些如何计算两个日期之间差异的例子:

SQLite: express the difference as days, hours, minutes between two given dates