如何使用扫描仪从用户获取日期作为输入?

时间:2019-07-10 11:24:19

标签: java date input java.util.scanner

我正在写一个注册活动,我想让用户输入用于存储记录的注册日期,但是问题是如何从使用扫描仪的用户那里获得日期作为输入?这样做了,但是它以某种方式说出一个错误,抱歉我还是Java的新手。

System.out.println(" Enter in  following format : dd-mm-yyyy");

String regDate=s.nextLine();

SimpleDateFormat format=new SimpleDateFormat("dd-mm-yyyy");

Date regDate=format.parse(date);

3 个答案:

答案 0 :(得分:0)

这是一个非常小的示例,具有适当的异常处理:

public class DateInputTest implements Closeable {

    private static final String DATE_FORMAT = "yyyy-MM-dd";

    private final Scanner scanner;

    public DateInputTest() {
    this.scanner = new Scanner(System.in);
    }

    public LocalDate getDateInput() {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
    String line = scanner.nextLine();
    try {
        return LocalDate.parse(line, formatter);
    } catch (Exception e) {
        System.err.println("Invalid date value:: " + line);
    }
    return null;
    }

    @Override
    public void close() throws IOException {
    scanner.close();
    }

    public static void main(String... args) {
        DateInputTest test = new DateInputTest();
        System.out.print("Please input a date [pattern yyyy-MM-dd]: ");
    Optional.ofNullable(test.getDateInput()).ifPresent(System.out::println);
    }

}

答案 1 :(得分:0)

不能有两个名称相同的变量。另外,日期在任何地方都没有定义。 最后一行应如下所示: Date date = format.parse(regDate);

答案 2 :(得分:0)

您可以这样做:

import java.text.SimpleDateFormat;
import java.util.*;

class Main {
  public static void main(String[] args) throws Exception {
    System.out.println("dd-mm-yyyy");
    Scanner scanner = new Scanner(System.in);
    String date = scanner.nextLine();
    Date date1=new SimpleDateFormat("dd-MM-yyyy").parse(date);  
    System.out.println(date1);
  }
}