1

我让用户输入日期,输入的日期是SimpleDateFormat. dd-MM-yyyy. 我将它保存在一个类对象中,然后想要显示它。当我在JOptionPane消息框中显示它时,它会显示如下内容:

java.text.SimpleDateFormat@9586200

什么可能导致这种情况,或者如何将其转换为字符串并显示?这是我将输入的日期从字符串转换为日期的代码。现在我将fDatea 存储到SimpleDateFormat flightDate;对象中。

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 = (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;

^就是我想要显示日期的方式。我将如何转换回StringflightDate被声明为SimpleDateFormat flightDate;并且日期是从代码中的 try-catch 分配给它的。

4

3 回答 3

3

我非常怀疑您是否真的想将任何内容设置为SimpleDateFormat. 我希望您将其设置Date为由解析SimpleDateFormat,您当前忽略的返回值:

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

(您的setFlightDate方法应该接受 aDate或者也许Calendar不是DateFormat。)

ASimpleDateFormat不是日期 - 它只是一个文本/日期转换器。

Date稍后将其转换为字符串,您可以使用format而不是parse

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

顺便说一句,看起来你在使用数组时 aList<Flight>会更明智。此外,您可能需要考虑使用Joda Time,它是一个更好的日期/时间 API。

于 2013-06-04T17:47:54.177 回答
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);
}
于 2013-06-04T18:01:36.133 回答
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);
于 2013-06-04T17:48:35.257 回答