前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算出这是今年的第几天,第几周,星期几

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

作者头像
呆呆
修改2021-10-08 14:26:39
1K0
修改2021-10-08 14:26:39
举报
文章被收录于专栏:centosDai

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

代码实现

代码语言:javascript
复制
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:代码有点长,有点乱,但理解应该很容易的

结果演示:

时间
时间

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档