日期转换:Cannot format given Object as a Date (SimpleDateFormat的parse和format)

1.错误信息

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
    at java.text.DateFormat.format(Unknown Source)
    at java.text.Format.format(Unknown Source)
    at .....QxtMessageUtils.main(QxtMessageUtils.java:210)

2.错误分析与错误解决

错误分析:
源代码

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
LOGGER.info(sdf.format("20180208120005"));
LOGGER.info(sdf.parse("20180208120005").getTime());

本意,第一句日志打印格式化的日期,第二句打印时间戳。
手误把sdf.parse写成了sdf.format,导致第一句日志报错。

错误解决:
sdf.format修改成sdf.parse即可。运行结果如下:

2018-02-27 17:03:40 INFO  QxtMessageUtils:210 - Thu Feb 08 12:00:05 CST 2018
2018-02-27 17:03:40 INFO  QxtMessageUtils:211 - 1518062405000

3.引申:SimpleDateFormat.parse与SimpleDateFormat.format的区别

SimpleDateFormat.parse方法如下:

public Date parse(String source) throws ParseException
{
    ParsePosition pos = new ParsePosition(0);
    Date result = parse(source, pos);
    if (pos.index == 0)
        throw new ParseException("Unparseable date: \"" + source + "\"" ,
            pos.errorIndex);
    return result;
}

SimpleDateFormat.parse的作用是将格式化的字符串转换成Date值


SimpleDateFormat.format方法如下:

public final String format(Date date)
{
    return format(date, new StringBuffer(),
                  DontCareFieldPosition.INSTANCE).toString();
}

SimpleDateFormat.format的作用是将Date值转换成格式化的字符串

一定要注意parseformat的区别,尤其是参数类型返回类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值