我正在开发一款应用来跟踪手机使用时间。 问题是,我需要在一天内显示时间使用情况。 例如,我需要从数据库显示我的应用程序仅在上午12点至晚上11点59分使用的时间 并且需要在第二天重置时间。
这是我的代码:
public void onCreate(SQLiteDatabase db) {
String CREATE_APPTIME_TABLE = "CREATE TABLE app_time (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"packageName TEXT UNIQUE," +
"appName TEXT," +
"elapsedTime INTEGER )";
这是检索时间的查询
public List<AppTime> getAllAppTime() {
List<AppTime> appTimes = new LinkedList<AppTime>();
// build query
String query = "SELECT * FROM " + TABLE_APPTIME + " WHERE " + KEY_TIME + " > 0";
// get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
我需要每天从早上12点到晚上11点59分显示elapsedTime,并在第二天重置时间。
谢谢。 :)
答案 0 :(得分:0)
我可以通过两种方式建议
该表格可以修改如下
public void onCreate(SQLiteDatabase db) {
String CREATE_APPTIME_TABLE = "CREATE TABLE app_time (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"packageName TEXT UNIQUE," +
"appName TEXT," +
"elapsedTime INTEGER, " +
"dateCol VARCHAR(50) )";
添加这两种方法
public static String getCurrentDate() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd", Locale.getDefault());
Calendar cal = Calendar.getInstance();
return dateFormat.format(cal.getTime());
}
public static String getDateFor(int date, int month, int year) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd", Locale.getDefault());
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, date);
cal.set(Calendar.MONTH, month); // month starts from 0
cal.set(Calendar.YEAR, year);
return dateFormat.format(cal.getTime());
}
然后在您查询中,您可以像这样访问特定日期的行
// build query
String query = "SELECT * FROM " + TABLE_APPTIME + " WHERE dateCol = '" + getCurrentDate() + "'";