【问题标题】:How to get date as input from user using scanner? [duplicate]如何使用扫描仪从用户那里获取日期作为输入? [复制]
【发布时间】:2019-07-10 20:13:10
【问题描述】:

我正在编写一个注册活动,我想让用户输入注册日期来存储记录,但问题是我如何使用扫描仪从用户那里获取日期作为输入?这样做了,但不知何故说有一个错误对不起我还是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);

【问题讨论】:

  • 通过将其读取为字符串,然后将其解析为日期
  • 你已经尝试过什么?
  • 将其读取为字符串并解析,但它说日期不能转换为字符串?
  • 我建议你不要使用SimpleDateFormatDate。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APILocalDateDateTimeFormatter
  • foollove99 想问一下:输入是什么?从日期格式,用户需要输入:10-07-2019

标签: java date input java.util.scanner


【解决方案1】:

你可以这样做:

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);
  }
}

【讨论】:

  • 您可能需要dd-MM-yyyy 模式,因为mm 是分钟。
【解决方案2】:

这是一个非常小的例子,正确处理异常:

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);
    }

}

【讨论】:

    【解决方案3】:

    您不能有两个具有相同名称的变量。此外,日期没有在任何地方定义。 最后一行应该是这样的: Date date = format.parse(regDate);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多