在我的Sqlite數據庫中,我在DATE數據類型中保存了日期。我如何從光標獲取這個日期?從Sqlite數據庫中獲取日期android
回答
SQLite使用ISO8601日期/時間格式存儲一個字符串,表示UTC(GMT)中的當前時間。這種格式(YYYY-MM-DD HH:MM:SS)適合於日期/時間比較。
使用以下代碼檢索日期。
Cursor row = databaseHelper.query(true, TABLE_NAME, new String[] {
COLUMN_INDEX}, ID_COLUMN_INDEX + "=" + rowId,
null, null, null, null, null);
String dateTime = row.getString(row.getColumnIndexOrThrow(COLUMN_INDEX));
此,返回一個字符串,分析它,並重新格式化您的本地格式和時區:
DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = iso8601Format.parse(dateTime);
} catch (ParseException e) {
Log.e(TAG, "Parsing ISO8601 datetime failed", e);
}
long when = date.getTime();
int flags = 0;
flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;
String finalDateTime = android.text.format.DateUtils.formatDateTime(context,
when + TimeZone.getDefault().getOffset(when), flags);
希望這會幫助你。
此代碼的工作
String s= cursor.getString(position);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date d=new Date();
try {
d= dateFormat.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
YourObject.setDate(d);
完美代碼,但需要修改才能根據自己的需求進行設置.Ex:添加** textView **的日期。 ** textview.setText(dateformate.formate(d))** –
SQLite不真的有DATE
類型(DATE
關鍵字只是意味着該列具有NUMERIC
親和力,每Datatypes In SQLite Version 3),所以它是由你來選擇如何約定你會存儲日期。常見的約定是(a)使用實數來存儲Julian日期或(b)使用整數來存儲Unix紀元(1970年以來的秒數,SQLite日期和時間函數使用'unixepoch'參數支持每Date And Time Functions)。
如果你正在做存儲日期爲Unix紀元(方便的Android因爲Date
對象上調用.getTime()
的毫秒數從1970年開始),然後讀取的SQLite DATE
字段作爲long
並通過毫秒相當於該進入java.util.Date
構造函數Date(long milliseconds)
。所以,它看起來像這樣:
SQLiteManager dbManager = new SQLiteManager(context, DB_NAME, null, VERSION);
SQLiteDatabase db = dbManager.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME,
new String[] { COLUMN_NAME_ID, COLUMN_NAME_DATE },
null, null, // selection, selectionArgs
null, null, null, null); // groupBy, having, orderBy, limit
try {
while(cursor.moveNext()) {
int id = cursor.getInt(0);
// Read the SQLite DATE as a long and construct a Java Date with it.
Date date = new Date(cursor.getLong(1)*1000);
// ...
}
} finally {
cursor.close();
db.close();
}
這是我在SQLite和Android中使用日期的首選方式。 – Flash
不錯,但我有點困惑..在這種情況下SQLite的字段類型應該是DATETIME或INT或DATE? –
- 1. 從android獲取本地sqlite數據庫
- 2. 如何在SQLite數據庫中獲取星期日期
- 3. Android - SQLite比較數據庫中的日期到日期
- 4. 如何從ANDROID中的sqlite數據庫中獲取數據?
- 5. laravel 4驗證後:日期 - 從數據庫中獲取日期
- 6. 無法從Android中的Sqlite數據庫獲取數據
- 7. 如何從Android中的SQLite數據庫獲取數據
- 8. 如何從ANDROID中的sqlite數據庫獲取列數據?
- 9. 從Android中的SQLite數據庫獲取數據?
- 10. 從android中的SQLite數據庫查詢信息的日期
- 11. Android從SQLite數據庫中選擇日期(存儲爲int)= today?
- 12. 從SQLite數據庫中讀取Android
- 13. 從Android 4.3中拉取SQLite數據庫
- 14. 從SQLite數據庫獲取數據;
- 15. 從sqlite數據庫獲取數據
- 16. 從SQLite數據庫中獲取Blob
- 17. 從數據庫sqlite中獲取信息
- 18. 從SQLite數據庫中獲取價值:
- 19. 從日期獲取數據
- 20. 如何從sqlite數據庫獲取兩個日期之間的所有數據?
- 21. 在android中從sqlite數據庫中獲取最大數量
- 22. 使用EditText從SQLite中的兩個日期獲取數據
- 23. 如何從數據庫中獲取數據類型的日期?
- 24. 從SQLite數據庫中獲取日期和時間字符串並設置AlarmManager
- 25. 如何從sqlite數據庫中獲取日期到字符串變量?
- 26. 如何從editText獲取日期並將其存儲在sqlite數據庫中
- 27. 從SQLite數據庫獲取數據到字符串Android
- 28. 從Android Sqlite數據庫一次獲取數據
- 29. 如何從sqlite數據庫獲取數據,並在Android的
- 30. Android從數據庫中獲取數據
hi Nagaraj436我使用數據類型日期列日期。所以我不能使用cursor.getString –
@DeepakKataria你有沒有嘗試過使用getString()?你有沒有使用它的錯誤? – TNR
使用數據類型的日期作爲字符串,這將有助於u.i做同樣的事情。正如@ Nagaraj436所說,這有助於解析他提到的形式中的日期以及其他形式。使用cursor.getString()。toString() – sankettt