在尝试处理数据库存储的Date对象时,我似乎得到了一个IllegalArgumentException,它通过在构造函数中传递新的Date()来生成今天的日期和时间:
Ingrediant newIngrediant = new Ingrediant(id, name, location, new Date(), price);
dbAdapter.insertIngrediant(newIngrediant);
问题发生在我的dbAdapter中:
ContentValues newIngrediantValues = new ContentValues();
// Assign values for each row.
newIngrediantValues.put(KEY_ID, _ingrediant.getIngrediantId());
newIngrediantValues.put(KEY_INGREDIANT_NAME, _ingrediant.getIngrediantName());
newIngrediantValues.put(KEY_INGREDIANT_LOCATION, _ingrediant.getIngrediantLocation());
Log.d("log", "---DATE NOW PROCESSING---");
//Convert date to long (db stores date as long)
try {
SimpleDateFormat df = new SimpleDateFormat("dd.MM.YY hh:mm");
Log.d("log", "1");
String dateString = df.format(_ingrediant.getDateFound());
Log.d("log", "2");
Date date = df.parse(dateString);
Log.d("log", "3");
long dateLong = date.getTime();
Log.d("log", "4");
newIngrediantValues.put(KEY_DATE_FOUND, dateLong); //Long
} catch (java.text.ParseException e) {
e.printStackTrace();
}`
看过Debugger之后,它已经找到了今天的日期,但是当涉及格式化模式时它没有注册值,因此我认为它与之相关。数据库本身将日期存储为长,这就是为什么以后我需要在添加它之前将其转换的原因。有什么想法发生了什么?非常感谢