赞
踩
闰年一年366天。
static boolean isLeapYear(int year) {
boolean tag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
tag = true;
}
return tag;
}
方法一:基姆拉尔森公式
y:年
m:月
d:日
W:星期几
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
注意:
1.W的取值范围是0,1,2,3,4,5,6,分别代表星期日,星期一,星期二,星期三,星期四,星期五,星期六。
2.今年的1、2月要换成去年的13、14月
eg:2020-1-1则换算成2019-13-1来代入公式计算。
3.这个公式可以直接计算出那个日期是星期几,但请注意!这类问题如果假设和真实情况不符的时候要记得换上偏移量,比如问题假设某个日期是星期一,而真实情况这天是星期二,那么我们计算出来的星期几也要-1,但请保证再1~7的环中。
方法二:API文档中Calendar类
注:1970年之前不能用API计算!!!
public static void main(String[] args) { // Calendar是抽象类,不能直接实例化, // Java提供了通过它的子类来实例化,或者静态工厂方法getInstance()来实例化Calendar Calendar calendar=new GregorianCalendar();//直接创建 //Calendar c=Calendar.getInstance();//工厂方法 // 设置年份:1999年 calendar.set(Calendar.YEAR, 1999); // 设置月份:12月 注意:一月份是0,所以12月份是11 calendar.set(Calendar.MONTH,11); // 设置日期 :26日 calendar.set(Calendar.DAY_OF_MONTH,26); // 输出星期几 注意:1 2 3 4 5 6 7 分别对应着周日 周一 周二 周三 周四 周五 周六 int week=calendar.get(Calendar.DAY_OF_WEEK); System.out.println(week); }
或者设置年月日的时候将三句合成一句,用到了Date类
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//2020年12月26日 输出7 即周六
cal.setTime(new Date(2020-1900,11,26));//这里不是因为题目啥啥原因才写的减号,而是API文档中写着只有-1900才是当前年份,即所求的2020年
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
}
方法三:Excel工具
注:如果询问的日期都在1970年之后的话,我们可以使用Excel直接计算。
技巧1:
日期处右击——>设置单元格格式
将类型改成aaaa——>确定 即可。
技巧2:
输入以下函数,回车即可。
方法一:自称“基点表示法”
思想:设定一个基点作为起始日期(公元元年一月一日),两个日期都与它 做差,再将所得结果相减即可。
//例:1979.12.15-2015.3.2 public class Date { static int days(int year1, int month1, int day1, int year2, int month2, int day2) { return getdays(year2, month2, day2) - getdays(year1, month1, day1); } // 传入的日期与基点日期之间的天数 static int getdays(int year, int month, int day) { int sum = 0; int[] dayOfMonth = new int[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (isLeapYear(year)) { dayOfMonth[2]++; } for (int i = 1; i < year; i++) { sum += 365; if (isLeapYear(i)) { sum++; } } for (int i = 1; i < month; i++) { sum += dayOfMonth[i]; } sum += day; return sum; } static boolean isLeapYear(int year) { boolean tag = false; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { tag = true; } return tag; } public static void main(String[] args) { System.out.println(days(1979, 12, 15, 2015, 3, 2)); } }
方法二:Excel工具
输入公式回车即可。
方法:Excel工具
输入以下公式回车即可。
注意:
日期实质上就是一个整数,如果输入7188回车显示日期的格式,可以通过设置单元格格式,将格式换成常规,显示的便是整数;如果输入日期格式显示的是一个整数,可以通过设置单元格格式,将格式换成日期,显示的便是日期格式!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。