用java探究“2020年有五个神奇的周六”是否很罕见

7 篇文章 0 订阅

前两天看到公众号推送的一篇文章,说是2020年有五个神奇的周六:2020年4月4号是周六,6月6号是周六,8月8号是周六,10月10号是周六,12月12号也是周六。

这个确实挺有意思,我就写个简单的demo去测试了一下”五个神奇的周六“是否罕见,下面是测试代码(只为图方便,用了Date已经失效的方法,仅供参考)

    //初始年份1900+120=2020,终止年份=2050
    for (int year = 120; year < 151; year++) {
            List<String> list = new ArrayList<>();
            for (int time = 0; time < 12; time++) {
                //Deprecated method:实际年份=year+1900
                Date date = new Date(year, time, time + 1);
                Date today = new Date(120, 0, 5);
                long dif = DateUtil.timeDifference(date, today) / (24 * 3600 * 1000);
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DAY_OF_YEAR, (int) dif);
                //DAY_OF_WEEK周日=1,所以周六=7
                if (cal.get(Calendar.DAY_OF_WEEK) == 7) {
                    list.add(date.toString());
                }
            }
            //输出一年内神奇周六大于四次的日期数据
            if (list.size() > 4) {
                System.out.println(list);
            }
        }

输出:

[Sat Apr 04 00:00:00 CST 2020, Sat Jun 06 00:00:00 CST 2020, Sat Aug 08 00:00:00 CST 2020, Sat Oct 10 00:00:00 CST 2020, Sat Dec 12 00:00:00 CST 2020]
[Sat Apr 04 00:00:00 CST 2026, Sat Jun 06 00:00:00 CST 2026, Sat Aug 08 00:00:00 CST 2026, Sat Oct 10 00:00:00 CST 2026, Sat Dec 12 00:00:00 CST 2026]
[Sat Apr 04 00:00:00 CST 2037, Sat Jun 06 00:00:00 CST 2037, Sat Aug 08 00:00:00 CST 2037, Sat Oct 10 00:00:00 CST 2037, Sat Dec 12 00:00:00 CST 2037]
[Sat Apr 04 00:00:00 CST 2043, Sat Jun 06 00:00:00 CST 2043, Sat Aug 08 00:00:00 CST 2043, Sat Oct 10 00:00:00 CST 2043, Sat Dec 12 00:00:00 CST 2043]
[Sat Apr 04 00:00:00 CST 2048, Sat Jun 06 00:00:00 CST 2048, Sat Aug 08 00:00:00 CST 2048, Sat Oct 10 00:00:00 CST 2048, Sat Dec 12 00:00:00 CST 2048]
从结果我们看到,从2020年至2050年之间,2026、2037、2043、2048年都有五个神奇的周六,并且月份都是一样的。看来,五个神奇的周六并不稀罕嘛。

然后好奇的我又去计算了一下未来30年内神奇周日的数据,发现也有五个年份有五个神奇周日。我掐指一算,明年开年肯定有公众号推送《2021年有五个神奇的周日》。日期数据如下:

[Sun Apr 04 00:00:00 CST 2021, Sun Jun 06 00:00:00 CST 2021, Sun Aug 08 00:00:00 CST 2021, Sun Oct 10 00:00:00 CST 2021, Sun Dec 12 00:00:00 CST 2021]
[Sun Apr 04 00:00:00 CST 2027, Sun Jun 06 00:00:00 CST 2027, Sun Aug 08 00:00:00 CST 2027, Sun Oct 10 00:00:00 CST 2027, Sun Dec 12 00:00:00 CST 2027]
[Sun Apr 04 00:00:00 CST 2032, Sun Jun 06 00:00:00 CST 2032, Sun Aug 08 00:00:00 CST 2032, Sun Oct 10 00:00:00 CST 2032, Sun Dec 12 00:00:00 CST 2032]
[Sun Apr 04 00:00:00 CST 2038, Sun Jun 06 00:00:00 CST 2038, Sun Aug 08 00:00:00 CST 2038, Sun Oct 10 00:00:00 CST 2038, Sun Dec 12 00:00:00 CST 2038]
[Sun Apr 04 00:00:00 CST 2049, Sun Jun 06 00:00:00 CST 2049, Sun Aug 08 00:00:00 CST 2049, Sun Oct 10 00:00:00 CST 2049, Sun Dec 12 00:00:00 CST 2049]
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值