我試圖獲取客戶入口和出口日期,看看它們是否有效。 但每次運行程序時,隨機天數都會添加到月份中。例如在我進入03之後,該月可以是43。你能告訴我爲什麼嗎?公曆日曆自動添加到月份
public void makeNewReservation() throws ParseException {
// Enter informations
boolean error=true;
boolean dateOK=false;
String date_sortiee="";
String date_entree="";
Scanner in=new Scanner(System.in);
while(error){
//take date of checkin and checkout and verify if they are OK
System.out.println("Single room selected ? dd/MM/yyyy");
System.out.println("Date de Entree?");
in=new Scanner(System.in);
// date_entree = in.next();
System.out.println("Date de Entree? dd/MM/yyyy");
date_entree = in.next();
String[] test = date_entree.split("/");
int day = Integer.parseInt(test[0]);
int Month = Integer.parseInt(test[1]);
int year = Integer.parseInt(test[2]);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
GregorianCalendar checkin= new GregorianCalendar();
checkin.set(year, Month, day);
System.out.println("Date de Sortie? dd/MM/yyyy");
date_sortiee = in.next();
String[] test1 = date_sortiee.split("/");
int day1 = Integer.parseInt(test[0]);
int Month1 = Integer.parseInt(test[1]);
int year1 = Integer.parseInt(test[2]);
DateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
GregorianCalendar checkout= new GregorianCalendar();
//System.out.println(format.format(checkin));
checkout.set(year1, Month1, day1);
checkdate(checkin,checkout);
dateOK= checkdate(checkin, checkout);
if (dateOK){
error=false;
}
else{
error=true;
}
}
public boolean checkdate(GregorianCalendar in,GregorianCalendar out){
DateFormat format = new SimpleDateFormat("dd/mm/yyyy");
GregorianCalendar today = new GregorianCalendar();
System.out.println(format.format(in.getTime()));
boolean test=false;
if(in.before(out)&&in.after(today)|| in.before(out)&& in.equals(today)){
System.out.println("puck u");
test= true;
}
return test;
你的示例代碼包含一個*很多*無意義的和分散的語句 - 包括兩個'DateFormat'變量,你永遠不會使用。那麼你的'checkDate'方法使用'mm'而不是'MM',但我們並不真正知道這是否是問題的一部分。請提供一個*簡短*但完整的程序來演示問題。 (順便說一下,我會避免自己解析這些值。) – 2013-02-13 18:48:45
將'mm'更改爲'MM',並切換爲使用JodaTime。 – pcalcao 2013-02-13 18:48:45
爲什麼你不使用你創建的'SimpleDateFormat'來做解析? 'checkin.parse(date_entree);'。 – 2013-02-13 18:49:35