2013-06-04 3 views
0

У меня есть пользователь, вводящий дату, введенная дата является SimpleDateFormat. дд-ММ-YYYY. Я сохраняю это в объекте класса, а затем хочу его отобразить. Когда я показываю это в окне сообщения JOptionPane. Это показывает это. [email protected] Что может вызвать это, или как я могу преобразовать его в строку и отобразить это? Вот код, в котором я конвертирую дату, введенную с строки на дату. Теперь я храню fDate в SimpleDateFormat flightDate; в объекте.Преобразование SimpleDateFormat в String

try 
{ 
    SimpleDateFormat fDate = new SimpleDateFormat("dd-MM-yyyy"); 
    fDate.setLenient(false); 
    fDate.parse(dateText); 
    Main.flightObjects[Main.flightCount].setFlightDate(fDate); 
} 
catch(java.text.ParseException d) 
{ 
    JOptionPane.showMessageDialog(null, 
    "Please make sure your date is in the correct format! dd-mm-yyyy\n e.g. 16-03-2013", 
    "Date Error 1",1); 
} 

String dateS; 
    dateS = (String)flightDate.format(flightDate); 

    String output = "Flight num: " + flightNumber + "\nDate: " + dateS + "\nDeparting City: " + departCity + "\nArrival City: " + arriveCity + "\nAvailable Seats: " + seatsAvailable + "\nSold Seats: " + seatsSold + "\nSeat Price: R" + seatPrice; 

    return output; 

Это ^, как я хочу, чтобы отобразить дату. Как мне преобразовать обратно в строку? flightDate был объявлен SimpleDateFormat flightDate; и дата была назначена ему из Кода в try catch. Спасибо.

+0

'SimpleDateFormat' это просто класс для преобразования даты в строку –

ответ

0

У вас есть ошибка в вашей программе. Смотрите обновленный код ниже (обратите внимание на переменную DATEVALUE):

try 
{ 
    SimpleDateFormat fDate = new SimpleDateFormat("dd-MM-yyyy"); 
    fDate.setLenient(false); 
    Date dateValue = fDate.parse(dateText); 
    Main.flightObjects[Main.flightCount].setFlightDate(dateValue); 
} 
catch(java.text.ParseException d) 
{ 
    JOptionPane.showMessageDialog(null, 
    "Please make sure your date is in the correct format! dd-mm-yyyy\n e.g. 16-03-2013", 
    "Date Error 1",1); 
} 
+0

Спасибо. Я не делал Date dateValue = fDate .... часть. –

2

Я очень сомневаюсь, что вы действительно хотите установить что-либо на SimpleDateFormat. Я ожидаю, что вы установите его в Date, что это разобран по SimpleDateFormat, что вы в настоящее время игнорирует возвращаемое значение:

Main.flightObjects[Main.flightCount].setFlightDate(fDate.parse(dateText)); 

(Ваш метод setFlightDate должен принимать Date или, возможно, Calendar, не DateFormat.)

A SimpleDateFormat не является датой - это просто конвертер текста/даты.

Чтобы преобразовать Date обратно в строку позже, вы бы использовать format вместо parse:

String text = fDate.format(Main.flightObjects[Main.flightCount].getFlightDate()); 

Как и в сторону, это выглядит, как вы используете массив, когда List<Flight> будет гораздо больше разумный. Кроме того, вы можете рассмотреть возможность использования Joda Time, который является гораздо лучшим API даты/времени.

+0

Hi; Спасибо за информацию. :-) Но по какой-то причине я просто не могу заставить его работать ...: -/ Я сделал eddit с моим кодом дисплея. –

+0

@EnthusedDragon: Вы не указали тип 'FlightDate', но независимо от того, какой он тип, вы не должны пытаться его форматировать! Вам нужно передать 'Date' в' DateFormat.format'. –

0

надеюсь, что это поможет, преобразовать его в строку. как показано ниже:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 

// Get the date 
Date today = Calendar.getInstance().getTime();   
// Using DateFormat format method we can create a string 
String reportDate = df.format(today); 

// Print date or do what ever you like to do with it 
System.out.println("Report Date: " + reportDate); 
Смежные вопросы