繁体   English   中英

(Java)错误的日期计算输出

[英](Java)wrong date calculation output

这是我在这里的第一篇文章。 我为我的语法道歉。 问题从此代码中,我想查找从开始日期到结束日期(如2014年12月3日到2014年3月23日)的周末和工作日。 当输入为xx / xx / 2015至xx / xx-2015时。 它没有任何问题,但是如果输入的是xx / xx / 2014到xx / xx / 2014,则会显示错误的日期。

由12/03/2014至23/03/2014

输出

3月12日,星期二:错误的日期

3月23日,星期六:错误的日期

例2

由11/03/2015至22/03/2015

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(); } } } 

JDK通常不会创建此类错误。 我在1.8.0_40上运行它(与您遇到的问题相同),它会产生正确的结果:

Mon-Fri: 8

Sat-Sun: 4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM