将给定的字符串答案与实际时间进行比较?

Compare given string answer to actual time?

public static void time (String[] args) {
    DateFormat df = new SimpleDateFormat("HH:mm");
    Date date = new Date();
    }
}

public class test {
    public static void main (String[] args) {
    System.out.println("What time is it?");
    int time = scan.nextInt();
    if(time = date) {                       // I know it's not correct but you get what I want
    System.out.println("That's right");
    else {
    ....
    }
    }
    }
}

所以我基本上希望有人通过输入实际时间来回答问题。然后我想将它与确切的当前时间进行比较,并判断它是否正确。

您可以让用户以特定格式输入日期时间,然后使用良好的旧 equals 进行比较。 例如,我在这里使用 YYYY-MM-DD HH:mm,SimpleDateFormat 帮助我解析日期。

DateFormat sdf = new SimpleDateFormat("YYYY-MM-DD HH:mm");
Date dateEntered = sdf.parse(new Scanner(System.in).nextLine());
if(dateEntered.equals(dateReference)) {
 ...
}
System.out.println("time " + dateEntered.toString());
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class CheckTime {
    public static void main(String[] args) {
        //Start your scanner
        Scanner scan = new Scanner(System.in);
        System.out.println("What time is it?");
        DateFormat df = new SimpleDateFormat("HH:mm");
        Date date = new Date();

        //Read the entire line as a String
        String time = scan.nextLine();

        //Format your datatetim in HH:mm format and compare the strings
        if (time.equals(df.format(date))) {                       // I know it's not correct but you get what I want
            System.out.println("That's right");
        } else {
            System.out.println("That's wrong");
        }
        //Never forget to close your scanner
        scan.close();
    }
}

我会使用 java.time.LocalTime class.

public static void main(String[] args) {
    String suppliedTimeString = args[0];

    LocalTime suppliedTime = LocalTime.parse(suppliedTimeString);

    LocalTime currentTime = LocalTime.now().truncatedTo(ChronoUnit.MINUTES);

    if (suppliedTime.compareTo(currentTime) == 0) {
      System.out.println("That's right");
    } else {
      System.out.println("That's wrong");
    }

}

要比较日期,您可以使用此方法:

    private static boolean compareDateWithVariance(LocalDateTime date1, LocalDateTime date2, Long varianceInSeconds){
  return date1.isAfter(date2.minusSeconds(varianceInSeconds)) && date1.isBefore(date2.plusSeconds(varianceInSeconds)) ;
}

这可用于解析您对 LocalDateTime 的输入:

String str = "1986-04-08 12:30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);