计算某年某月的某一天是星期几的算法

说多了没意思,直接送上公式。
             W = (Y-1) + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D   
                              Y:年   (年份后两位数)    
                             
D:是这个日子在这一年中的累积天数
            求出W后,在对7取余,余数为0代表星期天,1代表星期一,其它以此类推
                    (特别注意,[ ]表示取整,例如[15/4]=3)

具体例子:计算2015年2月1日是星期几?
          
            W =(15-1) + [(15-1)/4] - [(15-1)/100] + [(15-1)/400] + (31+1)
                 = 14 + [14/4] - [14/100] + [14/400] +32
                 = 49
             W % 7 =0
所以
2015年2月1日是星期一

计算某年某月的某一天是星期几的算法 - marsggbo - 火星教教主
在Java中,可以通过Zeller公式来计算某天是星期几。Zeller公式是一个计算星期算法,可以适用于公历(格里高利历)和儒略历,而且可以计算出公元前、公元后的日期对应的星期。 Zeller公式如下: h = (q + [13*(m+1)/5] + K + [K/4] + [J/4] - 2*J) % 7 其中: - h 是星期几(0 = 星期六,1 = 星期日,2 = 星期一,...,6 = 星期五) - q 是日期 - m 是月份(3 = 三月,4 = 四月,...,12 = 十二月,一月和二月要看作上一年的十三月和十四月,即如果计算1月或2月的日期,年份要减去1,月份要分别加上12或13) - K 是年份的后两位数 - J 是世纪数(年份的前两位数) - [] 表示取整函数 请注意,由于Zeller公式计算出的星期是从0(星期六)开始的,可能需要根据具体情况调整结果。 在编写程序时,需要注意月份和年份的处理,以及对1月和2月的特殊处理。 下面是一个使用Java实现的示例代码,计算某年某月某日是星期几: ```java public class ZellerFormula { public static void main(String[] args) { int year = 2023; // 年份 int month = 3; // 月份 int day = 14; // 日期 // 计算星期几 String dayOfWeek = getDayOfWeek(year, month, day); System.out.println("It's " + dayOfWeek + "!"); } public static String getDayOfWeek(int year, int month, int day) { if (month == 1 || month == 2) { month += 12; year -= 1; } int q = day; int m = month; int K = year % 100; int J = year / 100; int h = (q + (13 * (m + 1)) / 5 + K + K / 4 + J / 4 - 2 * J) % 7; // 调整结果使星期天为0,星期六为6 h = (h + 5) % 7; String[] daysOfWeek = {"星期五", "星期六", "星期日", "星期一", "星期二", "星期三", "星期四"}; return daysOfWeek[h]; } } ``` 请根据需要替换 `year`, `month`, `day` 的值来计算不同的日期对应的星期
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值