Android SimpleDataFormat-IllegalArgumentException
在尝试处理数据库存储的日期对象时,我似乎遇到了一个IllegalArgumentException,该对象是通过在构造函数中传递new Date()来生成todays日期和时间获得的:Android SimpleDataFormat-IllegalArgumentException,android,eclipse,sqlite,simpledateformat,illegalargumentexception,Android,Eclipse,Sqlite,Simpledateformat,Illegalargumentexception,在尝试处理数据库存储的日期对象时,我似乎遇到了一个IllegalArgumentException,该对象是通过在构造函数中传递new Date()来生成todays日期和时间获得的: Ingrediant newIngrediant=newIngrediant(id、名称、位置、新日期()、价格); dbAdapter.insertIngrediant(newIngrediant) 问题发生在我的dbAdapter中: ContentValues newIngrediantValues
Ingrediant newIngrediant=newIngrediant(id、名称、位置、新日期()、价格);
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();
}`
查看了调试器之后,它选择了今天的日期,但是当涉及到格式化模式时,它没有注册任何值,因此我认为这与此有关。数据库本身将日期存储为long,这就是为什么后来我需要在添加日期之前对其进行转换的原因。你知道发生了什么事吗?非常感谢由返回的值的类型是什么format()
仅java.util.Date
对象,与字符串的转换是多余的。@laalto getDateFound()返回一个日期值。我只是将传递的日期转换为字符串,这样我就可以使用SimpleDateFormat格式化日期,然后需要将其转换为long for storage。为什么不使用getDateFind().getTime()
来获取long值呢。。。但是,至少发布完整的异常以获得更好的帮助。@laalto在调试模式下再次查看变量后,调用方法时出现了一个com.sun.jdi.InvocationException。
exception发生,并在LogCat04-23 10:28:53.331:D/dalvikvm(1365)中标识:JDWP调用返回exceptObj=0x4175f8c0(Ljava/lang/NullPointerException;)
@laalto现在似乎已经修复了它,这确实与模式有关,因为它在调试器中返回null意味着它不被接受,使用EEE将其替换为完整版本,dd-MMM-yyyy-HH:mm:ss
然后逐渐减少到我想要的:dd/MMM/yyyy-HH:mm
并且它被接受了,这是非常不寻常的。谢谢你的帮助。