博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算两个日期之间相差多少天,计算当前日期是星期几
阅读量:4144 次
发布时间:2019-05-25

本文共 2437 字,大约阅读时间需要 8 分钟。

完美世界编程题,计算两个日期之间经过了多少个零点和多少个星期四。

package wanmeishijie170926;/* *输入2017/9/7 0:0:02017/9/21 0:0:0输出 13,1 *  */import java.util.Scanner;public class Test1 {	public static void main(String[] args) {		// TODO Auto-generated method stub		Scanner sc=new Scanner(System.in);		String[] str1=sc.nextLine().split(" ");		String[] str2=sc.nextLine().split(" ");		String sDate[]=str1[0].split("/");		String eDdate[]=str2[0].split("/");		String sTime[]=str1[1].split(":");		String eTime[]=str2[1].split(":");				int sYear=Integer.valueOf(sDate[0]);		int sMon=Integer.valueOf(sDate[1]);		int sDay=Integer.valueOf(sDate[2]);		int sHour=Integer.valueOf(sTime[0]);		int sMinu=Integer.valueOf(sTime[1]);		int sSec=Integer.valueOf(sTime[2]);		int eYear=Integer.valueOf(eDdate[0]);		int eMon=Integer.valueOf(eDdate[1]);		int eDay=Integer.valueOf(eDdate[2]);		int eHour=Integer.valueOf(eTime[0]);		int eMinu=Integer.valueOf(eTime[1]);		int eSec=Integer.valueOf(eTime[2]);				int day_diff=day_diff(sYear,sMon,sDay,eYear,eMon,eDay);		int week_diff=week(sYear,sMon,sDay);		if(day_diff>0 && eSec>0)			System.out.print(day_diff+",");		else if(day_diff==0)			System.out.print(0+",");		else if(day_diff>0 && eSec==0){			System.out.print(day_diff-1+",");			day_diff-=1;		}		if(4-week_diff>0 &&day_diff-(4-week_diff)>=0)			System.out.print(1);		else			System.out.print(day_diff/7);	}	public static int week(int y,int m,int d){  //计算当前日期是星期几	   int a=7; // 用来保存计算得到的星期几的整数  	   int str_date=0;  	   if((m==1)||(m==2))//如果是一月或二月进行换算  	   {  		   m+=12;  		   y--;  	   }  	   a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;   //得到的星期几的整数  	   switch (a){    	    case 0:  	     str_date=1;  	     break;  	    case 1:  	     str_date=2;  	     break;  	    case 2:  	     str_date=3;  	     break;  	    case 3:  	     str_date=4;  	     break;  	    case 4:  	     str_date=5;  	     break;  	    case 5:  	     str_date=6;  	     break;  	    case 6:  	     str_date=7;  	     break;  	   }  	   return str_date;     	}	public static int day_diff(int year_start, int month_start, int day_start, int year_end, int month_end, int day_end){//计算两个日期差多少天		 int y2, m2, d2;		 int y1, m1, d1;		 		 m1 = (month_start + 9) % 12;		 y1 = year_start - m1/10;		 d1 = 365*y1 + y1/4 - y1/100 + y1/400 + (m1*306 + 5)/10 + (day_start - 1);		 m2 = (month_end + 9) % 12;		 y2 = year_end - m2/10;		 d2 = 365*y2 + y2/4 - y2/100 + y2/400 + (m2*306 + 5)/10 + (day_end - 1);		 		 return (d2 - d1);	}}

转载地址:http://febti.baihongyu.com/

你可能感兴趣的文章
jarFile
查看>>
EJB3.0定时发送jms(发布/定阅)方式
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>
数学等于号是=那三个横杠是什么符
查看>>
HTTP协议详解
查看>>
java多线程中的join方法详解
查看>>
ECLIPSE远程调试出现如下问题 ECLIPSE中调试代码提示找不到源
查看>>
java abstract修饰符
查看>>
数组分为两部分,使得其和相差最小
查看>>
java抽象类和接口
查看>>
有趣的排序——百度2017春招
查看>>
二叉树的最近公共祖先LCA
查看>>
数组中累加和为定值K的最长子数组长度
查看>>
素数对--腾讯2017校招编程
查看>>
JAVA集合--ArrayList实现原理
查看>>
synchronized与Lock
查看>>
数据库索引
查看>>
实现包含min,max,push,pop函数的栈
查看>>
实验2-6 字符型数据的输入输出
查看>>
实验3-5 编程初步
查看>>