关于SimpleDateFormat处理时间格式容易忽视的问题

本文探讨了临近元旦时遇到的代码bug,重点在于理解`YYYY`与`yyyy`在日期格式中的区别,以及正确格式化日期的示例,揭示了大小写对于时间表示的潜在影响。

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

RT:

        临近元旦了,写的代码突然出现了bug,比如获取当前年份的代码片段

SimpleDateFormat sdf = new SimpleDateFormat("YYYY");
sdf.format(new Date());

唉,发现年份居然是2022年(当前年份是2021),觉得很奇怪就去查了相关资料。原来这些大小写也是有奖金的。平时都没注意这些。

        例如:

当前时间是2021年12月27日 14:02:36。这种时间格式正确的表达方式是yyyy-MM-dd HH:mm:ss

如果年份大写:YYYY表示的是当前周所在的年份,当前周指的是周日——周六,这算一周,如果本周有某天跨年了那么就计入下一年,因为今天12月27号,这周六是22年元旦,所以YYYY表示的结果就是2022年。。。

月份:MM,这个不需要多说了,几月就是几月。

分钟:mm,也不多说。

天:dd——对应的某月某日,比如12月27号,dd表示的就是27;
       DD——对应某年的多少天,比如12月27号,这天是2021年的第361天。

小时:hh——12小时制,比如当前时间下午两点就是02;

           HH——24小时制,下午两点就是14。

秒:ss表示。

毫秒:SS——这里的毫秒指的是秒后面的毫秒数,不包括秒,比如现在是14点02分36秒零250毫秒,SS表示的就是250。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值