樓主提出的問(wèn)題有點(diǎn)片面,我的理解是,你是不是想判斷字符串是不是日期格式?如果已經(jīng)是日期類(lèi)型,那就不需要判斷了,對(duì)把。判斷給定字符串是不是日期我給你提供兩種解決思路,一種是用正則,代碼我給你寫(xiě)好了。
我們擁有十載網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、手機(jī)網(wǎng)站開(kāi)發(fā)、HTML5、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專(zhuān)業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
public?boolean?isDate(String?date)?{
/**
?*?判斷日期格式和范圍
?*/
String?rexp?=?"^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
Pattern?pat?=?Pattern點(diǎn)抗 pile(rexp);
Matcher?mat?=?pat.matcher(date);
boolean?dateType?=?mat.matches();
return?dateType;
}
參數(shù)就是你要判斷的日期字符串,返回布爾值;
另一種方式就是:玩字符串正則才是王道嘛!希望采納
public?boolean?isValidDate(String?str)?{
boolean?convertSuccess?=?true;
//?指定日期格式為四位年/兩位月份/兩位日期,注意yyyy/MM/dd區(qū)分大小寫(xiě);
//如果想判斷格式為yyyy-MM-dd,需要寫(xiě)成-分隔符的形式
SimpleDateFormat?format?=?new?SimpleDateFormat("yyyy/MM/dd?HH:mm");
try?{
format.setLenient(false);
format.parse(str);
}?catch?(ParseException?e)?{
//?e.printStackTrace();
//?如果拋出ParseException或者NullPointerException,就說(shuō)明格式不對(duì)
convertSuccess?=?false;
}
return?convertSuccess;
}
推薦使用正則,
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class DateTest {
/**
* 判斷是否在同一個(gè)月
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return false:不在同一個(gè)月內(nèi),true在同一個(gè)月內(nèi)
*/
public static boolean isMonth(String startDate,String endDate){
if(margin(startDate, endDate)31){
return false;
}
int startMonth = Integer.parseInt(startDate.substring(5, 7));
int endMonth = Integer.parseInt(endDate.substring(5, 7));
if(startMonth==endMonth){
return true;
}else{
return false;
}
}
/**
* 計(jì)算開(kāi)始日期和結(jié)束日期差
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return
*/
private static int margin(String startDate,String endDate){
ParsePosition pos = new ParsePosition(0);
ParsePosition pos2 = new ParsePosition(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date ds = sdf.parse(startDate, pos);
Date de = sdf.parse(endDate, pos2);
long l = de.getTime()-ds.getTime();
int margin = (int)(l/24*60*60*1000);
return margin;
}
/**
* main方法測(cè)試
* @param args
*/
public static void main(String[] args) {
System.out.println(DateTest.isMonth("2014-10-17", "2014-10-25"));
System.out.println(DateTest.isMonth("2014-10-17", "2014-12-25"));
}
}
public?static?void?main(String[]?args)?{
SimpleDateFormat?format?=?new?SimpleDateFormat("yyyyMMdd");
Calendar?firstDayOfWeek?=?Calendar.getInstance(Locale.getDefault());
firstDayOfWeek.setFirstDayOfWeek(Calendar.MONDAY);
int?day?=?firstDayOfWeek.get(Calendar.DAY_OF_WEEK);
firstDayOfWeek.add(Calendar.DATE,?-day+1+1);//?后面的+1是因?yàn)閺闹苋臻_(kāi)始
//?本周一的日期
System.out.println(format.format(firstDayOfWeek.getTime()));
Calendar?lastDayOfWeek?=?Calendar.getInstance(Locale.getDefault());
lastDayOfWeek.setFirstDayOfWeek(Calendar.MONDAY);
day?=?lastDayOfWeek.get(Calendar.DAY_OF_WEEK);
lastDayOfWeek.add(Calendar.DATE,?7-day+1);
//?本周星期天的日期
System.out.println(format.format(lastDayOfWeek.getTime()));
}
這一段代碼可以獲取本周一的日期、本周日的日期,比如本周一為20180702、本周日為20180708。只要判斷給定的日期數(shù)字是否在[20180702, 20180708]范圍內(nèi)即可
以上的是判斷日期是否是本周的方法,至于本日和本月就很好判斷了,直接將日期格式化為20180702類(lèi)似的數(shù)字,然后與今天進(jìn)行比較即可判斷是否本日,與本月的字符串201807進(jìn)行比較,看字符串的前面6個(gè)字符是否equals即可
static
public
boolean
isValidDate(
int
year,
int
mon,
int
day,
short
year_min,short
year_max,
StringBuffer
msg)
{
if(yearyear_min
||
yearyear_max)
{
msg.append("年份必須在("+
year_min+"~"+year_max+
")之間,輸入值("+year+")無(wú)效\n");
return
false;
}else
if(mon1
||
mon12){
msg.append("月份必須在(1~12)之間,輸入值("+mon+")無(wú)效\n");
return
false;
}else
if(day1
||
day31){
msg.append("日號(hào)必須在(1~31)之間,輸入值("+day+")無(wú)效\n");
return
false;
}else
if(mon==2){
if(isLeapYear(year)
day29){
msg.append("閏年的閏二月日號(hào)必須在(1~29)之間,"+year+"是閏年,輸入值("+day+")無(wú)效\n");
return
false;
}else
if(day28){
msg.append("非閏年的閏二月的日號(hào)必須在(1~28)之間,"+year+"不是閏年,輸入值("+day+")無(wú)效\n");
return
false;
}
}
return
true;
}
//閏年
static
public
boolean
isLeapYear(int
year){
return
(year%4==0
year%100!=0)||
year%400==0;
}