当前位置: 技术问答>java相关
日期格式化的问题
来源: 互联网 发布时间:2015-07-07
本文导语: 现在要对按yyyy-MM-dd的格式输入一个日期进行检查确定它是否合法。 代码如下 import java.util.*; import java.text.*; .................... String s = ........ SimpleDateFormat sdf = new SimpledateFormat("yyyy-MM-dd"); sdf1.setLenient(false); try{ ...
现在要对按yyyy-MM-dd的格式输入一个日期进行检查确定它是否合法。
代码如下
import java.util.*;
import java.text.*;
....................
String s = ........
SimpleDateFormat sdf = new SimpledateFormat("yyyy-MM-dd");
sdf1.setLenient(false);
try{
Date d = sdf.parse(s);
}catch(Exception e){
//不合法的处理
...............
}
问题是输入"2002-1-1sdf"竟然能通过(即前面一部分合法后面就被忽略),但是我这里的要求是不能这样,请问怎么解决?
代码如下
import java.util.*;
import java.text.*;
....................
String s = ........
SimpleDateFormat sdf = new SimpledateFormat("yyyy-MM-dd");
sdf1.setLenient(false);
try{
Date d = sdf.parse(s);
}catch(Exception e){
//不合法的处理
...............
}
问题是输入"2002-1-1sdf"竟然能通过(即前面一部分合法后面就被忽略),但是我这里的要求是不能这样,请问怎么解决?
|
String s = ........
SimpleDateFormat sdf = new SimpledateFormat("yyyy-MM-dd");
sdf1.setLenient(false);
try{
Date d = sdf.parse(s);
//再把d的年月份取出来 和原来去比较 然后不等那就是有问题!
}catch(Exception e){
}
SimpleDateFormat sdf = new SimpledateFormat("yyyy-MM-dd");
sdf1.setLenient(false);
try{
Date d = sdf.parse(s);
//再把d的年月份取出来 和原来去比较 然后不等那就是有问题!
}catch(Exception e){
}
|
try:
1.
public static void main(String args[])
{
int year=200;
int month=200;
int day=200;
boolean bdateok=isDateOK(year,month,day);
if(bdateok)
System.out.println("old date:"+year+"-"+month+"-"+day+" is valid date");
else
System.out.println("old date:"+year+"-"+month+"-"+day+" isn't valid date");
}
public static boolean isDateOK(int year,int month,int date)
{
Calendar c=Calendar.getInstance();
c.set(year,month,date);
if(year==c.get(c.YEAR)&&month==c.get(c.MONTH)&&date==c.get(c.DATE))
return true;
else
return false;
}
2.
/**判断日期的合法性
* @param strDate 日期格式的字符串,如("yyyy-mm-dd"、"yyyymmdd")
* 返回值 如果合法返回true,否则返回false
*/
public static boolean isLegalDate(String strDate)
{
int intY,intM,intD;
int[]standardDays={31,28,31,30,31,30,31,31,30,31,30,31};
int[]leapyearDays={31,29,31,30,31,30,31,31,30,31,30,31};
if (strDate.trim().length()==10)
{ strDate=strDate.trim();
try{
intY=Integer.parseInt(strDate.substring(0,4));
intM=Integer.parseInt(strDate.substring(5,7));
intD=Integer.parseInt(strDate.substring(8));
}catch(Exception e){return false;}
}
else if(strDate.trim().length()==8)
{ strDate=strDate.trim();
try{
intY=Integer.parseInt(strDate.substring(0,4));
intM=Integer.parseInt(strDate.substring(4,6));
intD=Integer.parseInt(strDate.substring(6));
}catch(Exception e){return false;}
} else return false;
if (intM>12¦¦intM
1.
public static void main(String args[])
{
int year=200;
int month=200;
int day=200;
boolean bdateok=isDateOK(year,month,day);
if(bdateok)
System.out.println("old date:"+year+"-"+month+"-"+day+" is valid date");
else
System.out.println("old date:"+year+"-"+month+"-"+day+" isn't valid date");
}
public static boolean isDateOK(int year,int month,int date)
{
Calendar c=Calendar.getInstance();
c.set(year,month,date);
if(year==c.get(c.YEAR)&&month==c.get(c.MONTH)&&date==c.get(c.DATE))
return true;
else
return false;
}
2.
/**判断日期的合法性
* @param strDate 日期格式的字符串,如("yyyy-mm-dd"、"yyyymmdd")
* 返回值 如果合法返回true,否则返回false
*/
public static boolean isLegalDate(String strDate)
{
int intY,intM,intD;
int[]standardDays={31,28,31,30,31,30,31,31,30,31,30,31};
int[]leapyearDays={31,29,31,30,31,30,31,31,30,31,30,31};
if (strDate.trim().length()==10)
{ strDate=strDate.trim();
try{
intY=Integer.parseInt(strDate.substring(0,4));
intM=Integer.parseInt(strDate.substring(5,7));
intD=Integer.parseInt(strDate.substring(8));
}catch(Exception e){return false;}
}
else if(strDate.trim().length()==8)
{ strDate=strDate.trim();
try{
intY=Integer.parseInt(strDate.substring(0,4));
intM=Integer.parseInt(strDate.substring(4,6));
intD=Integer.parseInt(strDate.substring(6));
}catch(Exception e){return false;}
} else return false;
if (intM>12¦¦intM