用java探究“2020年有五個神奇的週六”是否很罕見

前兩天看到公衆號推送的一篇文章,說是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]
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章