【特定日期格式转换】日期格式2024.1.1,1.2,1.3,1.4,1.5怎么转换为格式2024.1.1~1.5 星期一、星期二、星期三、星期四、星期五

文章介绍了如何将2024年1月1日至1月5日的日期从数字格式转换为星期几的名称,使用了蔡勒公式和Java的SimpleDateFormat和Calendar类进行日期处理,展示了具体的实现步骤。

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

一、问题:

将日期格式2024.1.1,1.2,1.3,1.4,1.5怎么转换为格式2024.1.1~1.5 星期一、星期二、星期三、星期四、星期五

二、方案:

1、首先,将日期数字转换为星期几的名称。这可以通过使用Zeller公式直接查找日历来完成。对于2024年1月的日历,1月1日是星期二,因此我们可以推断出:

1月1日(2024.1.1)是星期二

1月2日(2024.1.2)是星期三

1月3日(2024.1.3)是星期四

1月4日(2024.1.4)是星期五

1月5日(2024.1.5)是星期六

2、接着,将日期范围表示为起始日期和结束日期,并用波浪号(~)连接。

3、最后,将转换后的星期几名称附加在日期范围后面

三、蔡勒公式

蔡勒公式(Zeller's congruence)是一个根据日期计算星期的算法,具体步骤如下:

  1. 确定年份:应考虑年份是否为闰年,以及日期是否在闰年中。
  2. 确定月份:对于1月和2月,应将其视为上一年的13月和14月来进行计算。
  3. 应用公式:蔡勒公式的基本形式是 

    h = (q + [(13(m+1))/5] + K + [K/4] + [J/4] + 5*J) mod 7

    其中:

  4. h:表示星期几(0=星期六,1=星期日,2=星期一,...,6=星期五)
  5. q:表示日期中的日
  6. m:表示月份(3=3月,4=4月,...,14=2月,15=1月)
  7. K:表示世纪内的年份(即年份的后两位数)
  8. J:表示世纪(即年份的前两位数)
  9. 计算结果:将得到的w值对7取余数,得到的结果即为星期几。

此外,如果计算的日期是在1582年10月4日或之前,需要使用修正的蔡勒公式,因为这是格里高利历法开始使用的日期。

总的来说,蔡勒公式是一种利用世纪、年份、月份和日期的信息,通过一系列的计算得出日期对应的星期数的方法。它基于公历的置闰规则来考虑,并且原点是公元元年12月31日。

蔡勒公式java示例代码

public class ZellerFormula {
    public static void main(String[] args) {
        int day = 1;
        int month = 1;
        int year = 2022;
        System.out.println("The day of the week is: " + getDayOfWeek(day, month, year));
    }

    public static String getDayOfWeek(int day, int month, int year) {
        if (month < 3) {
            month += 12;
            year -= 1;
        }
        int K = year % 100;
        int J = year / 100;
        int h = (day + 13 * (month + 1) / 5 + K + K / 4 + J / 4 + 5 * J) % 7;
        String[] daysOfWeek = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
        return daysOfWeek[h];
    }
}

四、Java实现

可以使用Java的SimpleDateFormat类和Calendar类来将日期字符串转换为星期几,然后拼接成所需的格式

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

public class Main {
    public static void main(String[] args) {
        String[] dateStrs = {"2024.1.1", "1.2", "1.3", "1.4", "1.5"}; // 输入的日期字符串数组
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.M.d");
        StringBuilder result = new StringBuilder();
        for (String dateStr : dateStrs) {
            try {
                Date date = sdf.parse(dateStr);
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(date);
                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
                String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
                result.append(weekDays[dayOfWeek - 1]).append("、");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        result.deleteCharAt(result.length() - 1); // 删除最后一个逗号
        System.out.println("输入的日期是:" + dateStrs[0] + "~" + dateStrs[dateStrs.length - 1] + ",对应的星期是:" + result.toString());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟是大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值