这是我在这里的第一篇文章。我为我的语法道歉。 题 从这段代码中,我想找到从开始日期到结束日期的周末日和工作日,例如12/03/2014到23/03/2014。输入为xx / xx / 2015至xx / xx-2015时。它没有任何问题,但如果输入为xx / xx / 2014到xx / xx / 2014,则会显示错误的日期。
实施例
12/03/2014至23/03/2014
输出
3月12日星期二:错误的日期
3月23日星期六:错误的日期
例2
2015年11月3日至2015年3月22日
3月11日星期三:好的
3月22日星期日:好的
我把它发给了我的朋友,他说它运行正常。是因为jdk版本? 我用java jdk1.8.0_40但我的朋友是jdk1.8.0_31。
import java.util.Scanner;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import java.util.GregorianCalendar;
class getDate
{
public String S_duration;
public String E_duration;
public getDate()
{}
public void Setstart(String start)
{
S_duration=start;
System.out.println("Start duration: "+S_duration);
}
public void Setend(String end)
{
E_duration=end;
System.out.println("End duration: "+E_duration);
}
public void date_cal()throws Exception
{
int count1=0;
int count2=0;
boolean i=false;
SimpleDateFormat parser = new SimpleDateFormat("dd/MM/yyyy");
Date Sdate = parser.parse(S_duration);
Date Edate = parser.parse(E_duration);
Calendar s = GregorianCalendar.getInstance();
Calendar e = GregorianCalendar.getInstance();
s.setTime(Sdate);
e.setTime(Edate);
Date SD=s.getTime();
Date ED=e.getTime();
//System.out.println("\nStart Duration(DD/MM/YYYY): "+s.get(Calendar.DAY_OF_WEEK)+"/"+s.get(Calendar.DATE));
System.out.println("\nStart Duration(DD/MM/YYYY): "+SD+"/"+s.get(Calendar.YEAR));
System.out.println("\nEnd Duration(DD/MM/YYYY): "+ED+"/"+e.get(Calendar.YEAR));
while (!i)
{
int day = s.get(Calendar.DAY_OF_WEEK);
if (day == Calendar.SATURDAY || day == Calendar.SUNDAY) {
count1++;
System.out.println("count1: "+count1);
}
else
{
count2++;
System.out.println("count2 "+count2);
}
if(s.equals(e))
{
i=true;
}
s.add(Calendar.DAY_OF_YEAR, 1);
}
System.out.println("\nMon-Fri: "+count2);
System.out.println("\nSat-Sun: "+count1);
System.out.println("\n*************************************************************************");
}
}
public class Datecalculation {
public static void main(String[] args)throws Exception {
String d1,d2;
int mode=0;
getDate datecal=new getDate();
while(mode==0)
{
System.out.println("\nPlease enter Start Duration(DD/MM/YYYY):");
Scanner in = new Scanner(System.in);
d1=in.nextLine();
datecal.Setstart(d1);
System.out.println("\nPlease enter End Duration(DD/MM/YYYY):");
Scanner in2 = new Scanner(System.in);
d2=in2.nextLine();
datecal.Setend(d2);
datecal.date_cal();
System.out.println("\nExit?(YES=1/NO=0)");
mode=in.nextInt();
}
}
}

答案 0 :(得分:0)
JDK通常不会创建此类错误。 我在1.8.0_40(同样你遇到问题)上运行它并产生正确的结果:
Mon-Fri: 8
Sat-Sun: 4