Android SimpleDataFormat-IllegalArgumentException

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

在尝试处理数据库存储的日期对象时,我似乎遇到了一个IllegalArgumentException,该对象是通过在构造函数中传递new Date()来生成todays日期和时间获得的:

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发生,并在LogCat
04-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
并且它被接受了,这是非常不寻常的。谢谢你的帮助。