[英]How to compare two dates in Java where both dates are entered by user?
我是編碼初學者,我需要用 Java 編寫一個程序,餐廳管理員可以在其中輸入日期(2022 年 1 月 10 日),直到客戶可以在他們的餐廳預訂,以及客戶想在之后的餐廳預訂管理員輸入的日期(2022年2月12日),客戶需要選擇另一個日期(必須在2022年1月10日之前或之前)。
我閱讀了日歷課和時間課,但仍然無法弄清楚。 我該怎么做? 很抱歉,我什至無法顯示有關此程序的代碼的最小部分,因為我真的不知道該怎么做。
import java.util.*;
public class BookRestaurant{
public static void main(String[] args){
Scanner key = new Scanner(System.in);
String uName;
String password;
String dateByAdmin;
String dateByCust;
System.out.print("Enter username: ");
uName = key.nextLine();
System.out.print("Enter password: ");
password = key.nextLine();
switch (uName){
case "admin":
System.out.print("Enter until what date restaurant open(mm/dd/yyyy): ");
dateByAdmin = key.nextLine();
break;
case "user":
System.out.print("Enter book date(mm/dd/yyyy): ");
dateByCust = key.nextLine();
//this is where the customer need to get asked to enter another date
break;
}
System.out.print("Thank You");
}
}
您必須轉換已輸入的日期。 您可以使用 java.text.SimpleDateFormat 類。
我建議您使用 java.time,現代 Java 日期和時間 API 來進行日期工作。 您將需要按照您在代碼中已經執行的方式從用戶讀取字符串,並將該字符串解析(轉換)為LocalDate
對象。 我們首先聲明一個用於解析的格式化程序:
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("M/d/u", Locale.US);
現在閱讀、解析和比較可能是這樣的:
Scanner key = new Scanner(System.in);
System.out.println("Admin: Enter until what date restaurant open (mm/dd/yyyy): ");
String dateByAdminString = key.nextLine();
LocalDate lastReservationDate = LocalDate.parse(dateByAdminString, DATE_FORMATTER);
System.out.println("Customer: Enter book date (mm/dd/yyyy):");
String dateByCustString = key.nextLine();
LocalDate bookDate = LocalDate.parse(dateByCustString, DATE_FORMATTER);
while (bookDate.isAfter(lastReservationDate)) {
System.out.println("Book date must not be after "
+ lastReservationDate.format(DATE_FORMATTER)
+ ". Enter an earlier date:");
dateByCustString = key.nextLine();
bookDate = LocalDate.parse(dateByCustString, DATE_FORMATTER);
}
System.out.println("Customer chose to book on " + bookDate);
示例會話:
Admin: Enter until what date restaurant open (mm/dd/yyyy):
01/10/2022
Customer: Enter book date (mm/dd/yyyy):
02/12/2022
Book date must not be after 1/10/2022. Enter an earlier date:
1/10/2022
Customer chose to book on 2022-01-10
在管理員輸入最后預訂日期之前接受用戶日期是沒有意義的。 我不知道你將如何在你的代碼中管理它。 由於我的代碼僅用於演示解析和比較,因此我忽略了該問題。
教程鏈接: Oracle 教程:日期時間
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.