① java 正则表达式验证日期格式 yyyy-MM-dd,如何写
我前不久刚好整了这段代码,你仔细看一下:
闰年:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
平年:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
上面代码验证的格式是yyyyMMdd,看懂了这个,你那个也就清楚了
② java 实现判断时间早晚(如6:00:00 晚于 4:00:00)
写一个比较时间的方法DateCompare给你,具体看注释,在main方法里面有测试:
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassTEST{
/**
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args)throwsException{
//例如比较当前时间和早上6:00
StringnowTime=newSimpleDateFormat("HH:MM").format(newDate());
System.out.println("当前时间为:"+nowTime);
System.out.println("与当日06:00相比");
inti=DateCompare(nowTime,"06:00","HH:MM");
switch(i){
case0:
System.out.println("两个时间相等");
break;
case1:
System.out.println("当前时间晚于06:00");
break;
case-1:
System.out.println("当前时间早于06:00");
break;
default:
break;
}
}
/**
*根据时间类型比较时间大小
*
*@paramsource
*@paramtraget
*@paramtype"YYYY-MM-DD""yyyyMMddHH:mm:ss"类型可自定义
*@param传递时间的对比格式
*@return
*0:source和traget时间相同
*1:source比traget时间大
*-1:source比traget时间小
*@throwsException
*/
publicstaticintDateCompare(Stringsource,Stringtraget,Stringtype)throwsException{
intret=2;
SimpleDateFormatformat=newSimpleDateFormat(type);
Datesourcedate=format.parse(source);
Datetragetdate=format.parse(traget);
ret=sourcedate.compareTo(tragetdate);
returnret;
}
}
该方法可以转换时间、日期、具体什么格式可以自定义,
另外如果你是需要做定时任务,推荐使用quartz有java的实现版。
希望对你有帮助。
③ java如何对生日(yyyymmdd)进行合法性判断
修改你说的存在的bug
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestBirthday {
public static void main(String[] args){
String birthday="20130132";
System.out.println(isBirthday(birthday));
}
/*
* @param : birthday 传入一个日期格式的字符串
* 支持 yyyy-MM-dd ,yyyyMMdd MM-dd-yyyy ,yyyy年MM月dd日
* @isBirthday 判断输入的字符串是否是合法的生日 生日不能大于当前日期
* */
public static boolean isBirthday(String birthday){
//定义需要过滤的条件,可以将你期望的日期格式添加到数组中
String[] formats={
"yyyy-MM-dd",
"yyyyMMdd",
"MM-dd-yyyy",
"yyyy年MM月dd日"
};
/*
* 设置格式过滤器
*/
//记录传入的日期字符串,转换成日期类型
Date birth=null;
//判断格式是否正确,默认值为false
boolean isRight=false;
for(String f:formats){
try {
birth =new SimpleDateFormat(f).parse(birthday);
//校验日期转换后是和传入的值不相同,说明日期传入有问题
//修正楼上提到的bug
if(!new SimpleDateFormat(f).format(birth).equals(birthday)){
return false;
}
isRight=true;
break;
} catch (ParseException e) {}
}
if(isRight){
//获取当前日期的毫秒数
long now =new Date().getTime();
//获取生日的毫秒数
long birthTime = birth.getTime();
//如果当前时间小于生日,生日不合法。反之合法
return birthTime<=now;
}else{
//输入的参数类型不是日期类型,或者类型和过滤中设置的类型不匹配
return false;
}
}
}
④ java 中 判断时间问题
用java中date的before方法,date1.before(date2),返回boolean 类型
if(date1.before(date2)){
//date1比date2时间提前
}else{
//date2比date1时间提前
}
下面是示例:
//判断当前时间是否在时间date2之前
//时间格式 2005-4-21 16:16:34
public static boolean isDateBefore(Date date2){
Date date1 = new Date();//当前时间
return date1.before(date2);
}