java 求出当月天数和有几个星期天

如题,帮忙写个算法,先谢过!
2025-02-23 05:13:28
推荐回答(2个)
回答1:

import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;class Demo{

//返回当前年份
int getYear(){
Date date=new Date();
String year=new SimpleDateFormat("yyyy").format(date);
return Integer.parseInt(year);
}
//返回当前月份
int getMonth(){
Date date=new Date();
String month=new SimpleDateFormat("MM").format(date);
return Integer.parseInt(month);
}
//判断闰年
boolean isLeap(int year){
if(((year%100==0)&&year%400==0)||((year%100!=0)&&year%4==0))
return true;
else
return false;
}
//返回当月天数
int getDays(int year,int month){
int days;
int FebDay=28;
if(isLeap(year))
FebDay=29;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;break;
case 4:
case 6:
case 9:
case 11:
days=30;break;
case 2:
days=FebDay;break;
default:
days=0;break;
}
return days;
}
//返回当月星期天数
int getSundays(int year,int month){
int sundays=0;
SimpleDateFormat sdf=new SimpleDateFormat("EEEE");
Calendar setDate= Calendar.getInstance();
//从第一天开始
int day;
for(day=1;day<=getDays(year,month);day++){
setDate.set(Calendar.DATE,day);
String str=sdf.format(setDate.getTime());
if(str.equals("星期日")){
sundays++;
}
}
return sundays;
}
public static void main(String[] args){
Demo demo=new Demo();
System.out.println ("本月有"+demo.getDays(demo.getYear(),demo.getMonth())+"天");
System.out.println ("本月有"+demo.getSundays(demo.getYear(),demo.getMonth())+"个星期天");
}
}次程序已经验证正确如果看程序的话我自认为我的代码比楼上的好,而且楼桑有用到java API已经过时的方法但是当写玩代码后去看了电脑下的时间,发现我好SB,一个月不就四个星期天或者五个星期谈吗?害我费了这么多时间,哎~~

回答2:

public static void showDate()
{
Date date=new Date();
int year =date.getYear();
int month=date.getMonth()+1;
int length=0;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: length=31; break;
case 4:
case 6:
case 9:
case 11: length=30; break;
case 2:
if((year%4==0)&&(year%100!=0)||(year%400==0))
length=29;
else
length=28;
}
int sun=0;
for(int i=1;i<=length;i++)
{
Date date1=new Date(year,month-1,i);
int showWeek=date1.getDay();
if(showWeek==0||showWeek==6)
{
sun++;
}
}
System.out.println("week:"+sun);
System.out.println("length:"+length);
}