在我的 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;
}
}
最佳答案
您将要在两个 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
block (您可能应该用 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;
}
关于java - 检查当前时间是否距离 "last_updated"时间超过一个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532676/