Java 扫描程序未将字符串正确存储为已解析的LocalDateTime

Java 扫描程序未将字符串正确存储为已解析的LocalDateTime,java,localdatetime,Java,Localdatetime,当我从扫描器中获取字符串变量并以“yyyy-MM-dd-HH:MM”格式将其解析为LocalDateTime时,扫描器保存了输入(即2020-10-12 14:30),没有时间。我相信时间会节省到下一个变量中。但是,如果输入2020-10-1214:30而不带空格,则会正确保存变量 下面是我的构造函数,在这里创建对象,并将字符串解析为localdatetime对象 public computerbooking(String strDAte, String ReturnDate,String co

当我从扫描器中获取字符串变量并以“yyyy-MM-dd-HH:MM”格式将其解析为LocalDateTime时,扫描器保存了输入(即2020-10-12 14:30),没有时间。我相信时间会节省到下一个变量中。但是,如果输入2020-10-1214:30而不带空格,则会正确保存变量

下面是我的构造函数,在这里创建对象,并将字符串解析为localdatetime对象

public computerbooking(String strDAte, String ReturnDate,String computerType,String AssetTag,String StudentId ){
counter++;
this.bookingId  = "Book"+counter;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
bookingDateAndTime = bookingDateAndTime.parse(strDAte,formatter);
returnDateAndTime = returnDateAndTime.parse(ReturnDate,formatter);
this.computerType = computerType;
this.AssetTag = AssetTag;
this.StudentId = StudentId;

}
如何指示扫描仪不读取日期和时间之间的空格以正确保存

  • LocalDateTime#parse
    是一个
    静态
    函数。使用
    LocalDateTime.parse(strDate,格式化程序)
    而不是
    bookingDateAndTime.parse(strDate,格式化程序)
  • 使用
    Scanner#nextLine
    扫描整行输入。如果您使用的是
    Scanner#next
    ,则它最多只能扫描
    2020-10-12
    ,即在
    2020-10-12
    之后遇到空白字符时,它将立即停止扫描
  • 演示:

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.util.Scanner;
    
    class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Enter date and time: ");
            String strDate = scanner.nextLine();
    
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm");
            LocalDateTime bookingDateAndTime = LocalDateTime.parse(strDate, formatter);
            System.out.println(bookingDateAndTime);
    
            // A custom format
            String formatted = bookingDateAndTime.format(DateTimeFormatter.ofPattern("MMM dd uuuu hh:mm a"));
            System.out.println(formatted);
        }
    }
    
    Enter date and time: 2020-10-12 14:30
    2020-10-12T14:30
    Oct 12 2020 02:30 pm
    
    运行示例:

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.util.Scanner;
    
    class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Enter date and time: ");
            String strDate = scanner.nextLine();
    
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm");
            LocalDateTime bookingDateAndTime = LocalDateTime.parse(strDate, formatter);
            System.out.println(bookingDateAndTime);
    
            // A custom format
            String formatted = bookingDateAndTime.format(DateTimeFormatter.ofPattern("MMM dd uuuu hh:mm a"));
            System.out.println(formatted);
        }
    }
    
    Enter date and time: 2020-10-12 14:30
    2020-10-12T14:30
    Oct 12 2020 02:30 pm
    

    如果不看到使用
    扫描仪的代码,就很难回答问题