我想爲客房預訂系統。用戶將從startDate到endDate插入一個日期。好吧,之後可以說另一個用戶需要在與用戶相同的日期之間預訂同一個房間。因此,如果第一個用戶從2017-1-1(yyyy-MM-dd)預訂了2017年的房間, 1-8,下一個用戶不能在這些日期或2017-1-3到2017-1-10之間預訂同一個房間。用戶將被告知他/她只能在1/1之前或之後1/8。我想在java中預訂系統,我無法檢查在另一個日期之間給出的日期
這裏是我的代碼:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
public static void main(String[] args) {
String startDateFirst = "2016-1-1";
String endDateFirst = "2016-1-4";
Date convertedStartDateFirst = convertDate(startDateFirst);
Date convertedEndDateFirst = convertDate(endDateFirst);
List<Date> myList = new ArrayList<Date>(getDaysBetweenDates(convertedStartDateFirst,convertedEndDateFirst));
String startDate2 = "2016-1-1";
String endDate2 = "2016-1-3";
Date convDateStr2 = convertDate(startDate2);
Date convDateEnd2 = convertDate(endDate2);
List<Date> myListSecond = new ArrayList<Date>(getDaysBetweenDates(convDateStr2,convDateEnd2));
System.out.println("FIRST BOOKING: " + getDaysBetweenDates(convertedStartDateFirst,convertedEndDateFirst));
System.out.println("SECOND BOOKING: " + getDaysBetweenDates(convDateStr2,convDateEnd2));
for (int i=0; i<=myListSecond.size(); i++)
{
if ((myList.get(i).getTime() >= myListSecond.get(i).getTime() && myList.get(i).getTime() <= myListSecond.get(i).getTime())) {
System.out.println(myListSecond.get(i) + " is taken");
} else if (myList.get(i).equals(myListSecond.get(i))) {
System.out.println(myListSecond.get(i) + " equal");
} else {
System.out.println(myListSecond.get(i) + "is not");
}
}
}
public static Date convertDate(String strDate)
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
try{
Date date = format.parse(strDate);
//String finalDate = format.format(date);
return date;
}catch (ParseException e)
{
}
return null;
}
public static List<Date> getDaysBetweenDates(Date startdate, Date enddate)
{
List<Date> dates = new ArrayList<Date>();
Calendar calendar = new GregorianCalendar();
calendar.setTime(startdate);
while (calendar.getTime().before(enddate))`enter code here`
{
Date result = calendar.getTime();
dates.add(result);
calendar.add(Calendar.DATE,1);
}
return dates;
}
}
雖然,在getDaysBetweenDates
我得到的日期,但與-1日期,爲什麼呢?以及如何返回確切的日期。
對不起,這不是StackOverflow的工作方式。形式問題_「我想做X,請告訴我在我的代碼中改變什麼」_被認爲是無關緊要的。請訪問[幫助]並閱讀[問],尤其是閱讀[爲什麼是「有人可以幫我嗎?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236/18157) –
I建議你看看喬達時間:http://www.joda.org/joda-time/,這是一個很好的API來計算日期,比日曆更好,更不容易出錯 – 2017-03-04 00:51:25
@Hugo喬達時間項目現在處於維護模式。該團隊建議遷移到java.time類。 –