2015-02-07 1 views
3

Я пытаюсь прочитать дату от пользователя, чтобы перейти к переменной GregorianCalendar. В настоящее время у меня есть неудобная настройка, где она читается по строкам. Можете ли вы помочь с решением, которое собирает ввод в одной строке? Я нашел класс SimpleDateFormat, но я не могу найти подходящего для этой конкретной цели.Дата ввода Java от Сканера в одной строке

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

ответ

7

Я хотел бы предложить вам прочитать в строке текста, с определенным форматом, а затем использовать 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.

+0

Привет, Джон, я понимаю, что есть некоторые лучшие решения. Тем временем я все еще учился, я проверил ваше решение, и кажется, что «дата» - это не формат, принятый как конструктор в GregorianCalendar (и я уже использую GregorianCalendar). Поэтому, если есть какое-то другое решение, которое делает (и не слишком сложно), я буду этому благодарен. Спасибо, кстати. – Turo

+0

@Turo: после его создания вы могли бы называть заданное время в календаре. –

+0

Что вы подразумеваете под заданным временем? – Turo

 Смежные вопросы

  • Нет связанных вопросов^_^