我在Java中將我的日期字段更改爲字符串時遇到問題。它在我的輸出toString中工作,但驗證片不能識別。我的代碼有什麼問題?我無法讓用戶發佈除真正的「M/d/yyyy」日期之外的任何內容,但我的驗證無效。思考?Java日期到字符串解析/驗證幫助需要
我已經發布了下面的開始日期代碼,「結束日期」代碼是相同的,但認爲你應該知道它存在。
非常感謝提前。
String stringStartDate = this.txtStartDate.getText();
SimpleDateFormat formatter = new SimpleDateFormat("M/d/yyyy");
Date pStartDate = null;
if (stringStartDate.length() > 0)
{
try {
pStartDate = formatter.parse(stringStartDate);
} catch (ParseException e1) {
e1.printStackTrace();
}
if (pStartDate == null)
{
this.textArea.setText(this.textArea.getText() + "\n"
+ "Error! Please enter a valid start date in the format M/d/yyyy (e.g. 1/2/2015)!");
return;
}
}
else
{
this.textArea.setText(this.textArea.getText() + "\n"
+ "Error! Please enter a valid start date in the format M/d/yyyy (e.g. 1/2/2015)!");
return;
}
這是我的toString()...這是完美的工作。
@Override
public String toString(){
return "Pay Period Start Date = " + simpleDateFormatMonthDayYear.format(this.pStartDate) + "\n"
+ "Pay Period End Date = " + simpleDateFormatMonthDayYear.format(this.pEndDate) + "\n";
}
從評論和我自己的試驗和錯誤我已經改變了一些事情,但現在都沒有工作。這筆交易是什麼?
SimpleDateFormat simpleDateFormatMonthDayYear = new SimpleDateFormat("M/d/yyyy");
String stringStartDate = simpleDateFormatMonthDayYear.format(this.txtStartDate.getText());
Date pStartDate = null;
if (stringStartDate.length() > 0)
{
try {
pStartDate = simpleDateFormatMonthDayYear.parse(stringStartDate);
} catch (ParseException e1) {
e1.printStackTrace();
}
if (pStartDate == null)
{
this.textArea.setText(this.textArea.getText() + "\n"
+ "Error! Please enter a valid start date in the format M/d/yyyy (e.g. 1/2/2015)!");
return;
}
}
else
{
this.textArea.setText(this.textArea.getText() + "\n"
+ "Error! Please enter a valid start date in the format M/d/yyyy (e.g. 1/2/2015)!");
return;
}
我注意到,工作使用一個'simpleDateFormatMonthDayYear'而不使用'formatter'的那個。兩種格式都一樣嗎?你有沒有驗證你想要解析的輸入?你有沒有用調試器進入代碼? –
您是否考慮過使用['JFormattedTextField'](http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html)或['JSpinner'](http://docs.oracle.com /javase/tutorial/uiswing/components/spinner.html)而不是?他們可以自動執行驗證,或者您(假設您使用Swing) – MadProgrammer
@ElliottFrisch,當我更改爲simpleDateFormatMonthDayYear時,它似乎變得更糟。 Thoguhts?我已經完成了一步調試器的步驟,但無濟於事。 –