假設資料庫欄位為 TEXT,存儲 "yyyy-MM-dd" 格式字串(如 "2023-06-15")。
public java.sql.Date getDateFromCursor(Cursor cursor, String columnName) {
int idx = cursor.getColumnIndex(columnName);
if (idx < 0 || cursor.isNull(idx)) return null;
String dateStr = cursor.getString(idx); // "2023-06-15"
try {
// 方法一:java.sql.Date.valueOf 直接解析 yyyy-MM-dd(Java 1.1+)
return java.sql.Date.valueOf(dateStr);
} catch (IllegalArgumentException e) {
// 格式不符時嘗試 SimpleDateFormat
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
java.util.Date utilDate = sdf.parse(dateStr);
return new java.sql.Date(utilDate.getTime());
} catch (ParseException ex) {
ex.printStackTrace();
return null;
}
}
}
java.sql.Date 繼承 java.util.Date,但僅保留日期部分(時分秒歸零)。Date.parse(String)(已棄用、非執行緒安全、格式敏感)。long 毫秒值:cursor.getLong(idx) → new java.sql.Date(ms)。