Java 为什么字符串使用SimpleDataFormat会导致IllegalArgumentException?
为什么此代码会导致非法参数异常Java 为什么字符串使用SimpleDataFormat会导致IllegalArgumentException?,java,Java,为什么此代码会导致非法参数异常 final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); dateFormat.format(new Date() + "23:59") // IllegalArgumentException occurs 时间被保存为字符串。走错路了吗?是的。这是错误的。请将代码更改为 SimpleDateFormat dateFormat = new Simple
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.format(new Date() + "23:59") // IllegalArgumentException occurs
时间被保存为字符串。走错路了吗?是的。这是错误的。请将代码更改为
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
dateFormat.format(new Date()) // Now working
您的字符串应该与日期格式匹配,或者您必须在此处使用日期对象。因为您正在尝试格式化字符串,而不是尝试格式化日期。因此,您使用的是(
Format.Format(Object)
而不是:DateFormat.Format(Date)
),它抛出一个非法参数,如文档所示:
抛出:
IllegalArgumentException-如果格式无法格式化给定对象
DateFormat将日期格式化为字符串,或将字符串解析为日期。它不格式化字符串
SimpleDateFormat.format(Date)
SimpleDateFormat.format(Object)
SimpleDateFormat
中有这两种方法用你所做的你称之为第二个。因此
您传入的字符串是无效日期,您将收到此异常。
我想你认为
newdate()
会给你一个没有Java中的时间部分。不,它也给你时间。所以你的
newdate()+“23:59”
变得有点像
Wed Jan 08 04:13:58东部时间201423:59
因此,您会遇到一个问题。
new Date()
是一个日期数据类型,它已经在EEE,dd-MMM-yyyy-HH:mm:ss z
格式中。是的,这是错误的方式,字符串应与日期模式匹配,但如何解决此问题?为什么会有最终格式?由于此日期格式是必需的且不应更改,我需要此输出:2014-01-08T09:34:00,但仅dateFormat.format(new date())将2014-01-08T01:00:00作为输出+1,尽管值得一提的是,连接运算符正在导致调用Date.toString()
。我需要此输出:2014-01-08T09:34:00,但只有dateFormat.format(new Date())将2014-01-08T01:00:00作为输出output@Marwief嗯,这个代码对我来说很好用。如果我做这个System.out.println(dateFormat.format(new Date()),我会得到2014-01-08T04:17:53;也许您的系统时间现在设置为凌晨1点。以后再试试,我想应该可以。