java扫描器未正确地将字符串存储为已解析的localdatetime

q9rjltbz  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(415)

当我从扫描器中获取字符串变量并将其解析为格式为“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;

}

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

ecbunoof

ecbunoof1#

LocalDateTime#parse 是一个 static 功能。使用 LocalDateTime.parse(strDate, formatter) 而不是 bookingDateAndTime.parse(strDAte,formatter) .
使用 Scanner#nextLine 扫描整行输入。如果您正在使用 Scanner#next ,它最多只能扫描 2020-10-12 i、 一旦在扫描后遇到空白字符,它就会停止扫描 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

相关问题