为什么此代码会导致非法参数异常?
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.format(new Date() + "23:59") // IllegalArgumentException occurs
时间保存为字符串。这是错误的方式吗?
答案 0 :(得分:3)
因为您正在尝试格式化String,而不是尝试格式化Date。您正在使用this method(Format.format(Object)
而非this one:DateFormat.format(Date)
),它会抛出IllegalArgument,如下所示:
抛出: IllegalArgumentException - 如果Format无法格式化给定对象
DateFormat将日期格式化为字符串,或将字符串解析为日期。它不会格式化字符串。
答案 1 :(得分:1)
是。这是错误的。将代码更改为
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.format(new Date()) // Now working
您的字符串应与您的日期格式匹配,或者您必须在此处使用日期对象。
答案 2 :(得分:1)
SimpleDateFormat.format(Date)
SimpleDateFormat.format(Object)
SimpleDateFormat
中有这两种方法
你所做的就是第二个。而作为这个
您传入的字符串是无效日期,您会收到此例外。
我认为你认为new Date()
会给你约会而没有
Java中的时间部分。不,它也给你时间部分。所以你的
new Date() + "23:59"
变得类似
Wed Jan 08 04:13:58 EST 201423:59
因此你得到的问题。