一下程序是检查用户的日期输入,如果不是yyyyMMdd,就提示“Please enter the date in YYYYMMDD format.”public class MainTest { public static void main(String[] args) {
String Hdate = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
java.util.Date utilDate = null;
Date hpDate = null;
try {
Hdate = "20100615";
utilDate = sdf.parse(Hdate);
hpDate = new java.sql.Date(utilDate.getTime());
System.out.println(hpDate.toString());
} catch(ParseException e) {
System.out.println("Please enter the date in YYYYMMDD format.");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
}
当:
Hdate = "20100615"; 输出结果是:2010-06-15
Hdate = "2010/06/15"; 输出结果是:Please enter the date in YYYYMMDD format.奇怪的是,当
Hdate = "2010-06-15"; 输出结果是:2009-12-06 (??? 为什么会这样, 改如何修改??)
String Hdate = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
java.util.Date utilDate = null;
Date hpDate = null;
try {
Hdate = "20100615";
utilDate = sdf.parse(Hdate);
hpDate = new java.sql.Date(utilDate.getTime());
System.out.println(hpDate.toString());
} catch(ParseException e) {
System.out.println("Please enter the date in YYYYMMDD format.");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
}
当:
Hdate = "20100615"; 输出结果是:2010-06-15
Hdate = "2010/06/15"; 输出结果是:Please enter the date in YYYYMMDD format.奇怪的是,当
Hdate = "2010-06-15"; 输出结果是:2009-12-06 (??? 为什么会这样, 改如何修改??)
解决方案 »
- 关于RMI项目打成jar后Client无法运行!
- Java中的接口可以定义成空接口吗?如果可以,那为什么要定义成空接口?
- 数值问题
- 第一个小程序就报错,不知何故?环境变量已经改过了,而且.class文件也生成了。请高手指点!
- Java,J2EE视频讲课
- 【求助】如何读取jar包外的配置文件
- 关于ObjectInputStream问题求助
- jb中加载sqlserver2000jdbc驱动 ...
- TMD, 实在是急了,哪里有javac和java这两个命令的源代码 ?
- 使用java时间的调查,谢谢大家
- 高手帮帮忙
- Java Platform, Enterprise Edition 6 SDK Update 1配置的问题
Hdate = "2010-06-15"跟Hdate = "2010-06-"效果是一样的,他就取前8位,为什么-满足MM跟dd的格式这个就不知道了,楼主自己去看源代码吧
Hdate = "20100615";
utilDate = sdf.parse(Hdate);
hpDate = new java.sql.Date(utilDate.getTime());System.out.println(hpDate.toString());
} catch(ParseException e) {
System.out.println("Please enter the date in YYYYMMDD format.");Hdate = "2010/06/15"; 就能捕捉到错误,但如果是Hdate = "2010-06-15";就捕捉不到错误。
sdf.setLenient(false);
utilDate = sdf.parse(Hdate);
把解析模式调成严格的。详情参照API文档:
setLenient
public void setLenient(boolean lenient)指定日期/时间解析是否不严格。进行不严格解析时,解析程序可以使用启发式的方法来解释与此对象的格式不精确匹配的输入。进行严格解析时,输入必须匹配此对象的格式。 参数:
lenient - 为 true 时,解析过程是不严格的
System.out.println(String.format("当前日期:%1$tY年%1$tm月%1$td日 %1$tH:%1$tM:%1$tS", new Date()));