① 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);
}