计算出这是今年的第几天,第几周,星期几

题目:计算出这是今年的第几天,第几周,星期几

代码实现

public class TestTime {

	public static void main(String[] args) {
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = new Date(System.currentTimeMillis());
		count(sdf.format(date));
		
	}

	private static void count(String str) {
		// TODO Auto-generated method stub
		int allDay = 0; 	//	用来叠加总天数	
		int totalDay = 0;	//	总天数	
		int week = 0;	//	第几周
		int mday = 0;	//	每个月对应的天数
		String weekDay = null;	//	星期几
		int year = Integer.valueOf(str.substring(0, 4));
		int month = Integer.valueOf(str.substring(5, 7));
		int day = Integer.valueOf(str.substring(8, 10));

		totalDay = CalculateAllDay(year,month,day,allDay,mday);
		week = CalculateWeek(totalDay,week);
		weekDay = CalculateWeekDay(year,month,day,weekDay);
		System.out.println("这是"+year+"年的"+ totalDay +"天" + ",第"+ week +"周" + ",星期"+ weekDay);
	}

	//	总天数
	private static int CalculateAllDay(int year, int month, int day,int allDay,int mday) {
		// TODO Auto-generated method stub
		for(int i=1;i<month;i++) {
			switch(i) {
				case 1:case 3:case 5:case 7:case 8:case 10:case 12:{
						mday = 31;
						break;
					}
				case 4:case 6:case 9:case 11:{
						mday = 30;
						break;
					}
				case 2:{
						if( (year%4==0) && (year%100!=0 || year%400==0)) {
							mday = 29;
						}else {
							mday = 28;
						}
						break;
					}
			default:
				break;
			}
			allDay+=mday;
		}
		return allDay+day;
	}

	//	总周数
	private static int CalculateWeek(int totalDay,int week) {
		// TODO Auto-generated method stub
		if(totalDay%7==0) {
			week = totalDay/7;
		}else {
			week = totalDay/7+1;
		}
		return week;
	}

	//	星期几
	private static String CalculateWeekDay(int y, int m, int d,String weekDay) {
		// TODO Auto-generated method stub
		if(m==1 || m==2) {
			m+=12;
			y--;
		}
		int iWeek = (d+2*m+3*(m+1)/5+y+ y/4-y/100+y/400)%7;	//
		
		switch(iWeek) {
			case 0:weekDay="一";break;
			case 1:weekDay="二";break;
			case 2:weekDay="三";break;
			case 3:weekDay="四";break;
			case 4:weekDay="五";break;
			case 5:weekDay="六";break;
			case 6:weekDay="日";break;
		}
		return weekDay;
	}

}

Tip:代码有点长,有点乱,但理解应该很容易的

结果演示:

时间

发布了46 篇原创文章 · 获赞 61 · 访问量 3257

猜你喜欢

转载自blog.csdn.net/hyx1249273846/article/details/103474878