Java 在一行中输入扫描仪的日期
Java input date from Scanner in one line
我正在尝试从用户那里读取日期以传递给 GregorianCalendar 变量。目前我有一个尴尬的设置,它逐行读取。您能提供一种在一行中收集输入的解决方案吗?我找到了 SimpleDateFormat class,但找不到适合此特定用途的合适格式。
Scanner time = new Scanner(System.in)
System.out.println("Type year: ");int y =time.nextInt();
System.out.println("Type month: ");int m =time.nextInt();
System.out.println("Type day: ");int d = time.nextInt();
System.out.println("Type hour: ");int h = time.nextInt();
System.out.println("Type minute: ");int mm = time.nextInt();
GregorianCalendar data = new GregorianCalendar(y,m,d,h,mm);
我建议你阅读一行文本,使用特定的格式,然后使用 DateFormat
来解析它。例如:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm",
Locale.US);
System.out.println("Enter date and time in the format yyyy-MM-ddTHH:mm");
System.out.println("For example, it is now " + format.format(new Date()));
Date date = null;
while (date == null) {
String line = scanner.nextLine();
try {
date = format.parse(line);
} catch (ParseException e) {
System.out.println("Sorry, that's not valid. Please try again.");
}
}
如果可以,请使用 Java 8 java.time
类 或 Joda Time - 具有相同的基本思想,但使用 类 来自那些API。两者都 比使用 Date
和 Calendar
好 多 。
我正在尝试从用户那里读取日期以传递给 GregorianCalendar 变量。目前我有一个尴尬的设置,它逐行读取。您能提供一种在一行中收集输入的解决方案吗?我找到了 SimpleDateFormat class,但找不到适合此特定用途的合适格式。
Scanner time = new Scanner(System.in)
System.out.println("Type year: ");int y =time.nextInt();
System.out.println("Type month: ");int m =time.nextInt();
System.out.println("Type day: ");int d = time.nextInt();
System.out.println("Type hour: ");int h = time.nextInt();
System.out.println("Type minute: ");int mm = time.nextInt();
GregorianCalendar data = new GregorianCalendar(y,m,d,h,mm);
我建议你阅读一行文本,使用特定的格式,然后使用 DateFormat
来解析它。例如:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm",
Locale.US);
System.out.println("Enter date and time in the format yyyy-MM-ddTHH:mm");
System.out.println("For example, it is now " + format.format(new Date()));
Date date = null;
while (date == null) {
String line = scanner.nextLine();
try {
date = format.parse(line);
} catch (ParseException e) {
System.out.println("Sorry, that's not valid. Please try again.");
}
}
如果可以,请使用 Java 8 java.time
类 或 Joda Time - 具有相同的基本思想,但使用 类 来自那些API。两者都 比使用 Date
和 Calendar
好 多 。