怎样判断输入的字符串是否是“YYYY-MM-DD”格式的?

wangxuanyi 2003-08-18 03:28:50
请问
...
System.out.println("查询日志起始日期:");
String startDate=in.InputString();
...
怎么判断startDate的格式是“YYYY-MM-DD”
...全文
691 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousm6 2003-08-19
  • 打赏
  • 举报
回复
其实你这个判断包含两部分,一是判断字串是否为****-**-**的形式,而是判断字串是否为日期。
SimpleDateFormat的函数只能作第一种判断。如果不用正则表达式的话还是自己写函数吧。
String sDate = "****-**-**";
// 判断形式
try {
if ( (sDate.indexOf("-") == 5) && (sDate.lastIndexOf("-") == 8)) {
// 形式符合要求,判断是否为日期
Calendar calendar = Calendar.getInstance();
Calendar.setLenient( false );
Calendar.set(Integer.parseInt(sDate.substring(0, 4)),
Integer.parseInt(sDate.substring(5, 7)) - 1,// 月份比较特别,要-1才能得到相应的月
Integer.parseInt(sDate.substring(8, 10)));
Date dt = calendar.getTime();
return true;
} else {
// 形式不符合要求
return false;
}
} catch (Exception e) {
// 非日期
return false;
}
cbhyk 2003-08-19
  • 打赏
  • 举报
回复
String s = ...
java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try
{
if(s.equals(sdf.format(sdf.parse(s)))
//格式正确;
else
//格式不正确;
}
catch(ParseException e)
{
//格式不正确;
}
wangxuanyi 2003-08-19
  • 打赏
  • 举报
回复
还有没有更好的方法呀?
SimpleDateFormat 方法不能保证输入的确实是日期,比如:1999-00-01就不能检测出来
正则表达式不能在JDK1.2上使用,而且SCO UNIX 的JDK好象只有1.2版本的???
怎么验证是合法日期呀??
onefox 2003-08-18
  • 打赏
  • 举报
回复
mark
马行空牛耕田 2003-08-18
  • 打赏
  • 举报
回复
学习……
coordinate 2003-08-18
  • 打赏
  • 举报
回复
//正则表达式
Pattern p=Pattern.compile("[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]");
Matcher m=p.matcher(startDate);
if(!m.find()){
//错误
}
geyf 2003-08-18
  • 打赏
  • 举报
回复
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try{
df.parse(startDate);//抛异常就不是正确格式
}catch(){}
cocotree 2003-08-18
  • 打赏
  • 举报
回复
.substring
knight_qmh 2003-08-18
  • 打赏
  • 举报
回复
java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse(startDate);
javahui 2003-08-18
  • 打赏
  • 举报
回复
正则表达式,好象是JDK1。4支持吧

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧