mik*_*157 0 java validation date
用户在yyyy/mm/dd的jTextfield中输入他的出生日期,我想确保他正确地输入它并且它是一个真实的日期.到目前为止这是我的代码:
SimpleDateFormat df = new SimpleDateFormat("yyyy/mm/dd");
Date testDate = null;
Birth = jTextField3.getText();
try{
testDate = df.parse(Birth);
} catch (ParseException e){ }
if (!df.format(testDate).equals(Birth)){
JOptionPane.showMessageDialog(rootPane, "invalid date!!");
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是它说我不能java.sql.Date
投入一个java.util.Date
mm
是分钟.MM
是几个月:
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅文档.
您应该将其设置为严格(df.setLenient(false)
,然后您不需要尝试再次格式化结果 - 只需解析异常即可.
就个人而言,我会使用Joda Time来处理Java中的任何日期/时间 - 这是一个更好的API.
至于java.util.Date
vs java.sql.Date
- 您给我们的代码将完全使用java.util.Date
.如果您已经拥有了java.sql.Date
要保留的导入,那么您需要以下内容:
java.util.Date testDate = ...;
Run Code Online (Sandbox Code Playgroud)
虽然您不需要重新格式化它,但您可能根本不需要变量:
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
df.setLenient(false);
Date testDate = null;
boolean valid = false;
try {
df.parse(jTextField3.getText());
valid = true;
}
catch (ParseException e) { } // valid will still be false
if (!valid) {
JOptionPane.showMessageDialog(rootPane, "invalid date!!");
}
Run Code Online (Sandbox Code Playgroud)
(或者你可以在catch块中显示消息对话框,但是你不能轻易地else
为成功案例提供一个条款...)
归档时间: |
|
查看次数: |
2961 次 |
最近记录: |