Java日期中YYYY与yyyy的区别

0.码仙励志

旁观者的姓名永远爬不到比赛的计分板上。

1.Java日期中YYYY与yyyy的区别

今天是2021的最后一天,正好今天有空,可以记录一下前几天发现的一个问题。

问题描述:前几天(2021年)发现服务器上的一个获取当前日期的方法获取到了2022年是时间,首先想到的就是服务器时间是不是不准了,经过排查,发现不是服务器的问题,而是因为获取当前时间把yyyy写成了YYYY。

我们用代码案例来描述一下:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * java日期中YYYY与yyyy的区别
 */
public class DateTest {
    public static void main(String[] args) {
        DateFormat lowerCase = new SimpleDateFormat("yyyy-MM-dd");
        DateFormat upperCase = new SimpleDateFormat("YYYY-MM-dd");
        Calendar calendar = Calendar.getInstance();
        calendar.set(2021, Calendar.DECEMBER, 19);
        for (int i = 1; i < 22; i++) {
            System.out.println(lowerCase.format(calendar.getTime()) + "=========" + upperCase.format(calendar.getTime()));
            calendar.add(Calendar.DATE, 1);
        }
    }
}

运行结果如下:

2021-12-19=========2021-12-19
2021-12-20=========2021-12-20
2021-12-21=========2021-12-21
2021-12-22=========2021-12-22
2021-12-23=========2021-12-23
2021-12-24=========2021-12-24
2021-12-25=========2021-12-25
2021-12-26=========2022-12-26
2021-12-27=========2022-12-27
2021-12-28=========2022-12-28
2021-12-29=========2022-12-29
2021-12-30=========2022-12-30
2021-12-31=========2022-12-31
2022-01-01=========2022-01-01
2022-01-02=========2022-01-02
2022-01-03=========2022-01-03
2022-01-04=========2022-01-04
2022-01-05=========2022-01-05
2022-01-06=========2022-01-06
2022-01-07=========2022-01-07
2022-01-08=========2022-01-08

从运行结果可以分析出来,问题从2021-12-26开始发生。
我们先上一张日历图再分析问题。
在这里插入图片描述
从图中可以发现,2021-12-26和2022-01-01在同一周。
经过查阅资料得知:
y:year-of-era;正正经经的年,即元旦过后
Y:week-based-year;只要本周跨年,那么这周就算入下一年

就比如说 2021-12-26 到 2021-12-31 这几天是跨年的一周,那使用 YYYY 的话会显示 2022,使用 yyyy 则会从 2022-01-01 才开始算是 2022。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值