
import javautilCalendar;
public class Main {
public static void main(String[] args) {
Systemoutprintln(countWorkDay(2018, 6));
}
/
获取指定年月有多少个工作日)
@param year
@param month
@return
/
public static int countWorkDay(int year, int month) {
Calendar c = CalendargetInstance();
cset(CalendarYEAR, year);
// 月份是从0开始计算,所以需要减1
cset(CalendarMONTH, month - 1);
// 当月最后一天的日期
int max = cgetActualMaximum(CalendarDAY_OF_MONTH);
// 开始日期为1号
int start = 1;
// 计数
int count = 0;
while (start <= max) {
cset(CalendarDAY_OF_MONTH, start);
if (isWorkDay(c)) {
count++;
}
start++;
}
return count;
}
// 判断是否工作日(未排除法定节假日,由于涉及到农历节日,处理很麻烦)
public static boolean isWorkDay(Calendar c) {
// 获取星期,1~7,其中1代表星期日,2代表星期一 7代表星期六
int week = cget(CalendarDAY_OF_WEEK);
// 不是周六和周日的都认为是工作日
return week != CalendarSUNDAY && week != CalendarSATURDAY;
}
}
楼上正解,不过楼主问出这个问题可能也是初学者,我就提供一下用简单语法的代码吧
public static void main(String[] args) {
Scanner scan=new Scanner(Systemin);
Systemoutprintln("请输入年份");
int year= scannextInt();//得到需求年份
Systemoutprintln("请输入月份");
int month=scannextInt();//得到需求月份
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Systemoutprintln(year+"年"+month+"月的天数为:"+31);
break;
case 4:
case 6:
case 9:
case 11:
Systemoutprintln(year+"年"+month+"月的天数为:"+30);
case 2:
if((year%400)==0 || ((year%4)==0)&&((year%100)!=0)){
Systemoutprintln(year+"年2月的天数为:"+29);
}else{
Systemoutprintln(year+"年2月的天数为:"+28);
}
}
}
代码实现如下:
package test01;
import javautilCalendar;
/
@author 码灵
20170905
/
public class GetDay {
public static void main(String[] args) {
int currentMaxDays = getCurrentMonthDay();
int maxDaysByDate = getDaysByYearMonth(2017, 9);
Systemoutprintln("本月天数:" + currentMaxDays);
Systemoutprintln("2017年9月天数:" + maxDaysByDate);
}
/
获取当月的 天数
/
public static int getCurrentMonthDay() {
Calendar a = CalendargetInstance();
aset(CalendarDATE, 1);
aroll(CalendarDATE, -1);
int maxDate = aget(CalendarDATE);
return maxDate;
}
/
根据年 月 获取对应的月份 天数
/
public static int getDaysByYearMonth(int year, int month) {
Calendar a = CalendargetInstance();
aset(CalendarYEAR, year);
aset(CalendarMONTH, month - 1);
aset(CalendarDATE, 1);
aroll(CalendarDATE, -1);
int maxDate = aget(CalendarDATE);
return maxDate;
}
}
还有闰年
2月是29天
能被4整除,但不能被100整除,或可以被400整除
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
if (month % 4 == 0 && month % 100 != 0 || month % 4 == 0)
return 29;
else
return 28;
break
}
1、必须有日期为支撑,闰年和非闰年的月份天数可能不一样,若求A1(A1为日期)月份的天数,可用公式:=day(date(year(a1),month(a1)+1,0))
2、day是日期函数用来求日期格式数值的日期数值的返回以序列号表示的某日期的天数,用整数 1 到 31 表示。
比如:
=day("2011/5/4") 得出的值就是4
以上就是关于java根据年月获取对应的月份工作日天数全部的内容,包括:java根据年月获取对应的月份工作日天数、java 获取某月份的具体天数、java中 如何获取当月的天数,指定日期的月份天数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)