2015-10-15 4 views
0

В моем коде я хочу иметь отдельные номера из формата даты, чтобы я мог использовать их в качестве ИНТ значений:Java получить Int числа от DateFormat и имеют пользовательский ввод

public static final String DATE_FORMAT = "dd.MM.yyyy"; 

public int age() 
{ 
    DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 
    Date date = new Date(); 

// How to convert to int? 
     int currentnDay = ?; 
     int currentMonth = ?; 
     int currentYear = ?; 
} 

я также хотел бы получить пользовательский ввод в определить день, месяц и год за один раз, если это еще возможно:

private Date dateOfPublication; 

public void input() 
{ 
    Scanner scn = new Scanner(System.in); 
    System.out.print("Please enter dateOfPublication: "); 
// How to setup input for this? 
} 

Я надеюсь, что вы можете помочь мне, раньше я все это сделал seperatly но код был довольно большим, и я думаю, было бы красивее, если Я мог сделать это так.

обновление: хорошо, что я делаю вход, как это сейчас:

System.out.print("Please enter dateOfPublication, use format of x.x.xxxx: "); 
    userInputDate = scn.next(); 

    String[] ary = userInputDate.split("\\."); 

    publicationDay = Integer.parseInt(ary[0]); 
    publicationMonth = Integer.parseInt(ary[1]); 
    publicationYear = Integer.parseInt(ary[2]); 

спасибо за вашу помощь!

ответ

0

Вы можете использовать:

dateFormat.format(today).split("\\."); 

Для вашего кода:

DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 
Date date = new Date(); 

String[] dateArr = dateFormat.format(today).split("\\."); 

int currentnDay = Integer.parseInt(dateArr[0]); 
int currentMonth = Integer.parseInt(dateArr[1]); 
int currentYear = Integer.parseInt(dateArr[2]); 

IdeOne Example

+0

Все, что случилось с '# Календарь get' и с помощью' 'Calendar.DATE', Calendar.MONTH' и' 'Calendar.YEAR' (если вы не используете Java 8 или JodaTime)? – MadProgrammer

+0

Прохладный, а как насчет ввода пользователем? Должен ли я просто попробовать, что предлагает MadProgrammer? – DisasterCoder

+0

@MadProgrammer nope, мне это нравится, но я только что продолжил код OP. –

1

Посмотрите на Java 8 новом Time API (или JodaTime или Calendar, если вы» действительно застряли)

LocalDate ld = LocalDate.parse("16.10.2015", DateTimeFormatter.ofPattern(DATE_FORMAT)); 
System.out.println(ld); 
System.out.println(ld.getDayOfMonth()); 
System.out.println(ld.getMonth().getValue()); 
System.out.println(ld.getYear()); 

Какие выходы

2015-10-16 
16 
10 
2015 

Теперь, вы можете просто попросить пользователя ввести дату в заданном формате и попытаться проанализировать результат, если синтаксический не удается, вы можете reprompt их

Для пример ...

Scanner input = new Scanner(System.in); 
LocalDate ld = null; 
do { 

    System.out.print("Please enter date in " + DATE_FORMAT + " format: "); 
    String value = input.nextLine(); 

    try { 
     ld = LocalDate.parse(value, DateTimeFormatter.ofPattern(DATE_FORMAT)); 
    } catch (Exception e) { 
     System.err.println(value + " is not a valid date for the format of " + DATE_FORMAT); 
    } 

} while (ld == null); 

System.out.println(ld); 
System.out.println(ld.getDayOfMonth()); 
System.out.println(ld.getMonth().getValue()); // Is probably 0 indexed 
System.out.println(ld.getYear()); 
0

Во-первых, вы должны разобрать строку ввода Тип данных календаря является более гибким для обработки даты и времени. Это пример, который показывает некоторые операции Date/Calendar.

Date date; 
Calendar c; 
// Get the current date 
c = Calendar.getInstance(); 
System.out.println("Current Calendar:" + c.getTime().toString()); 

int currentnDay = c.get(Calendar.DATE); 
int currentMonth = c.get(Calendar.MONTH); 
int currentYear = c.get(Calendar.YEAR); 
System.out.println(String.format("Current Values: %d/%d/%d", 
              currentnDay, currentMonth, currentYear)); 

String DATE_FORMAT = "dd.MM.yyyy"; 
DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 
date = dateFormat.parse("11.10.1981"); 
System.out.println("Modified Date:" + date.toString()); 

// reset Calendar 
c = Calendar.getInstance(); 
// set date to the calendar 
c.setTimeInMillis(date.getTime()); 

currentnDay = c.get(Calendar.DATE); 
currentMonth = c.get(Calendar.MONTH); 
currentYear = c.get(Calendar.YEAR); 
System.out.println(String.format("Modified Values: %d/%d/%d", 
              currentnDay, currentMonth, currentYear)); 

Это результат примера.

Текущий Календарь: Чт 15 октября 20:22:59 EDT 2015

Текущие значения: 15/9/2015

Дата изменения: вс 11 октября 00:00:00 EDT 1981

Модифицированные значения: 11/9/1981