在我的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;
}
}
答案 0 :(得分:8)
你想要在两个Calendar
或Date
之间进行数学运算。
注意:不推荐使用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