我正在为 Android OS 编写一个应用程序,我需要在 SQLite DB 中存储一些时间值。我一直在使用 android.text.format.Time 将时间值存储在应用程序中,然后将值作为毫秒作为 REAL 值插入到数据库中。在 SDK 模拟器上,一切正常。在我有机会测试我的应用程序的唯一一部手机上(到目前为止),我的持续时间代码没有按预期工作。一些相关代码:
private static final String DATABASE_CREATE =
"create table " + DATABASE_TABLE + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_START + " REAL, "
+ KEY_STOP + " REAL, "
+ KEY_DUR + " REAL );";
...
private SQLiteDatabase mDb;
ContentValues timerValues = new ContentValues();
...
timerValues.put(KEY_START, stime.toMillis(false));
timerValues.put(KEY_STOP, etime.toMillis(false));
timerValues.put(KEY_DURATION, stime.toMillis(false)-etime.toMillis(false));
int result = mDb.insert(DATABASE_TABLE, null, timerValues);
我从两个使用稍微不同的代码位的单独函数中提取这些数据,两者都使用 Time.set(long millis),都给出了不正确的结果:开始和停止值恢复正确,但持续时间过长 17 小时。我是否遗漏了一些关于计算持续时间的信息,或者这似乎只是这个特定机器人有一些“特别”的地方?我将在周一测试另一个机器人,但任何想法都会受到赞赏。