小记带有PM/AM的12小时制的日期字符串转成yyyy-mm-ddHH:mm:ss格式

本文通过两个代码示例展示了在使用SimpleDateFormat进行日期解析时,字母`mm`和`MM`的区别。错误地使用`mm`会导致11月被错误解析为1月。正确格式`MM/dd/yyyyhh:mm:ssaa`确保了月份的正确解析,而错误格式`mm/dd/yyyyhh:mm:ssaa`则引发了日期错误。这个例子强调了在处理日期格式时精确性的关键性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2022年11月10号下午12:00:00

1 正确代码示例

 public static void main(String[] args) throws ParseException {
        String releaseTime = "11/10/2022 12:00:00 PM";
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa",Locale.ENGLISH);
        Date releaseTimeDate = sdf.parse(releaseTime);
        System.out.println(releaseTimeDate);
        releaseTime = DateFormatUtils.formatDateSecond(releaseTimeDate);
        System.out.println(releaseTime);
    }

输出结果为:
Thu Nov 10 12:00:00 CST 2022
2022-11-10 12:00:00

2 错误代码示例

 public static void main(String[] args) throws ParseException {
        String releaseTime = "11/10/2022 12:00:00 PM";
        SimpleDateFormat sdf = new SimpleDateFormat("mm/dd/yyyy hh:mm:ss aa",Locale.ENGLISH);
        Date releaseTimeDate = sdf.parse(releaseTime);
        System.out.println(releaseTimeDate);
        releaseTime = DateFormatUtils.formatDateSecond(releaseTimeDate);
        System.out.println(releaseTime);
    }

输出结果:
Mon Jan 10 12:00:00 CST 2022
2022-01-10 12:00:00
可见11月份变成了1月份,而问题就出在"mm/dd/yyyy hh:mm:ss aa"里的mm是小写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值