日期转换:Cannot format given Object as a Date (SimpleDateFormat的parse和format)
2023-09-14 09:07:32 时间
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值转换成格式化的字符串。
一定要注意parse和format的区别,尤其是参数类型和返回类型。
原文链接:https://blog.csdn.net/hanchao5272/article/details/79390902
相关文章
- 关于使用LayoutParams清除设置以及DateFormat无法正确转换格式化日期的问题
- vue格式化时间戳_日期格式转换
- js将字符串时间转换为date对象_js转换日期格式
- Linux shell 执行报错 字符编码转换 iconv/dos2unix 将 gbk/gb2312 转utf8 解决方案
- 学习LAMBDA函数:将Excel公式转换为自定义函数(上)
- oracle固定列的行列转换详解数据库
- spring mvc 日期转换详解编程语言
- Java中Date日期字符串格式的各种转换详解编程语言
- 期转换Oracle 日期时间转换技巧精选(oracle月日)
- Oracle 日期函数详解:实现时间操作与转换(oracle日期1)
- Oracle日期转换方法:简单易行的指南(oracle怎么转换日期)
- MSSQL中如何将日期格式转换为字符串(mssql 转日期格式)
- asp是的日期转换为星座的函数
- java中字符串与日期的转换实例
- 解析php时间戳与日期的转换
- DataTablesList互相转换的实现类示例
- PHP学习笔记之字符串编码的转换和判断
- ORACLE毫秒与日期的相互转换示例