【发布时间】:2015-04-13 00:55:49
【问题描述】:
我在将 java 中的日期字段更改为字符串时遇到问题。它在我的输出 toString 中有效,但验证部分无法识别。我的代码有什么问题?除了真正的“M/d/yyyy”日期外,我不能让用户发布任何内容,但我的验证不起作用。想法?
我在下面发布了开始日期代码,“结束日期”代码是相同的,但我认为你应该知道它存在。
非常感谢。
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";
}
根据 cmets 和我自己的反复试验,我已经改变了一些东西,但现在都不起作用。什么交易?
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或JSpinner代替?他们可以自动执行验证,或者您(假设您使用的是 Swing) -
@ElliottFrisch 当我更改为 simpleDateFormatMonthDayYear 时,情况似乎变得更糟。思想?我已经完成了跨步调试器,但无济于事。
-
@MadProgrammer JSpinner 是不可能的。我没有为 JFormattedTextFields 工作太多,但如果我不能让它工作,我会开始研究它们。感觉答案就在眼前!
标签: java string validation parsing date