【发布时间】:2014-02-03 15:03:28
【问题描述】:
大家好,我正在使用这种方法来检查字符串是否可以转换为日期,但似乎它不起作用,这是我编写的代码,用户以这种格式输入日期 dd/MM/ YYYY 那么这就是检查它会发生的事情
...
String date = JOptionPane.showInputDialog(frame,"Insert Date:");
if (date ==null) { return;}
while (!(isValidDate(date))) {
JOptionPane.showMessageDialog(frame, "Incorrect Date");
date = JOptionPane.showInputDialog(frame,"Insert Date:");
if (date ==null) { return;} }
String[] parts = date.split("/");
int year = Integer.parseInt(parts[2]);
int month = Integer.parseInt(parts[1]);
int day = Integer.parseInt(parts[0]);
...
这是检查日期的方法
public boolean isValidDate(String dateString) {
SimpleDateFormat df = new SimpleDateFormat("dd/MM/YYYY");
if (dateString.length() != "ddMMYYYY".length()) {
return false; }
try {
df.parse(dateString);
return true;
} catch (ParseException e) {
return false;
}
这似乎不起作用,因为无论我在输入中插入什么,它总是进入 while 块,这段代码有什么问题?
编辑
修复了条件错误
if (dateString.length() != "ddMMYYYY".length())
现在我遇到了另一个问题,它接受像 54/12/2030 这样的值,这显然不是日期格式
【问题讨论】:
-
可能是
"dd/MM/YYYY".length()?