扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
一道经典的JAVA面试题
随便给你一个日期(例如2009-8-20),问这一天是否是“星期六”?
问我的时候没什么思路,回来也没太想明白?
算也行.
Java code public int getWeek(int dYear,int dMonth,int dDay){
int days=0;
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i<dMonth;i++){
days+=months[i];
}
days+=dDay+6;
return (days)%7;
}
解释一下:days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
以公元0年为基准,看过了多少年。
1.每一年按365天算。
2.做调整,看经过了多少闰年。按闰年的规律做相应的调整。
dDay+6是因为0年1月1日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了)
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者