3

在我的 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;
  }

}
4

2 回答 2

9

您将要在两个Calendars 或Dates 之间进行数学运算。

注意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;
}
于 2012-07-18T00:28:48.137 回答
0

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

SQLite:将两个给定日期之间的差异表示为天、小时、分钟

于 2012-07-18T00:35:31.777 回答