Java 细节汇总(3)

1. 使用 Long.parse() 时报错

项目重构,测试报出错误 For input string: "100.00"。因为日志只打印了报错的 message, 没有打印异常类型,看上去有点摸不着头脑。初步分析日志,大致猜测是解析时出了问题,此后使用以下代码本地重现了该问题

String a = "100.0";
Long b = Long.parse(a);

报错 java.lang.NumberFormatException: For input string: "100.00"

显而易见,就是数字解析的时候出现异常。Long 是整形,parse 的数字字符串必须是整形,而被解析的字符串带上了小数点,故解析时抛出了异常

对于这个错误,可以先把 a = "100.0" 使用精度更高的Double或BigDecimal来 parse, 之后取其 Long 值即可


2. YYYY-MM-dd 造成的日期错误

最近遇到个日期格式化的问题,在 Java 中使用以下代码格式化当前时间 2019-12-30的时候发现最终拿到的字符串是2020-12-30,问题是显而易见的。查找资料,最终发现该问题和日期格式化的 Pattern模式有关,大写的 Y 代表的是 week year即当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年,2019-12-30被算入了下一年的第一周,故年份变成了 2020 年。要解决这个问题,只要将Pattern模式修改为 yyyy-MM-dd即可

 LocalDate localDate = LocalDate.now();
 DateTimeFormatter yyyymMdd = DateTimeFormatter.ofPattern("YYYY-MM-dd");
 String format = yyyymMdd.format(localDate);

发布了97 篇原创文章 · 获赞 88 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/103624476
今日推荐