導航:首頁 > 編程語言 > java日期判斷合法

java日期判斷合法

發布時間:2025-04-15 16:55:06

1. 在java中如何用數組實現把日期轉換為星期幾

這個問題不是很難,有關判斷日期是否合法,其實已經有現成的包可以用,沒有必要自己寫方法來實現,代碼如下:

import java.util.*;

public class WeekTest {
private String[][] javadays=new String[12][31];

public WeekTest(){
String[] weeks=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
for(int i=0;i<12;i++){
for(int j=0;j<31;j++){
GregorianCalendar gc=new GregorianCalendar();
gc.setLenient(false);
try{
gc.set(2008,i,j+1);
int week=gc.get(Calendar.DAY_OF_WEEK);
javadays[i][j]=new String(weeks[week-1]);
}catch(Exception e){}
}
}
}

public void randomPrint(){
HashSet<Integer> hs=new HashSet<Integer>();
while(true){
if(hs.size()==10)
break;
int day=((int)(Math.random()*1000))%366;
if(hs.contains(new Integer(day)))
continue;
hs.add(new Integer(day));
}
for(Integer day:hs){
GregorianCalendar gc=new GregorianCalendar(2008,0,1);
gc.add(Calendar.DATE,day.intValue());
int month=gc.get(Calendar.MONTH)+1;
int date=gc.get(Calendar.DAY_OF_MONTH);
System.out.println("2008年"+(month<10?"0"+month:month)+"月"+(date<10?"0"+date:date)+"日\t"+javadays[month-1][date-1]);
}
}

public void replaceAll(){
String[][] weekStr=new String[2][];
weekStr[0]=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
weekStr[1]=new String[]{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
for(int i=0;i<12;i++){
for(int j=0;j<31;j++){
for(int k=0;k<7;k++){
if(javadays[i][j]!=null && javadays[i][j].equals(weekStr[0][k]))
javadays[i][j]=new String(weekStr[1][k]);
}
}
}
}

public static void main(String[] args) {
WeekTest wt=new WeekTest();
wt.randomPrint();
wt.replaceAll();
wt.randomPrint();
}

}

2. java中如何判斷輸入的日期是否合法

java.text.DateFormat dateFormat= new java.text.SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);

dateFormat.setLenient(false);

java.util.Date timeDate = dateFormat.parse(dateString);

//轉換為util類型

看到dateFormat.setLenient(false);沒有,設定其為false就是強制判斷是否非法日期,不讓系統自動轉換,否則2月31號系統會自動轉換為3月2號或者3號。

3. java判斷是否是日期

樓主提出的問題有點片面,我的理解是,你是不是想判斷字元串是不是日期格式?如果已經是日期類型,那就不需要判斷了,對把。判斷給定字元串是不是日期我給你提供兩種解決思路,一種是用正則,代碼我給你寫好了。

publicbooleanisDate(Stringdate){
/**
*判斷日期格式和范圍
*/
Stringrexp="^((\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]))))))";

Patternpat=Pattern.compile(rexp);

Matchermat=pat.matcher(date);

booleandateType=mat.matches();

returndateType;
}

參數就是你要判斷的日期字元串,返回布爾值;

另一種方式就是:玩字元串正則才是王道嘛!希望採納

publicbooleanisValidDate(Stringstr){
booleanconvertSuccess=true;
//指定日期格式為四位年/兩位月份/兩位日期,注意yyyy/MM/dd區分大小寫;
//如果想判斷格式為yyyy-MM-dd,需要寫成-分隔符的形式
SimpleDateFormatformat=newSimpleDateFormat("yyyy/MM/ddHH:mm");
try{

format.setLenient(false);
format.parse(str);
}catch(ParseExceptione){
//e.printStackTrace();
//如果拋出ParseException或者NullPointerException,就說明格式不對
convertSuccess=false;
}
returnconvertSuccess;
}

推薦使用正則,

4. java怎麼驗證身份證合法,

//身份證正則表達式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份證正則表達式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
地區、性別和身份證進行判斷的正則表達式:
<script>
var
aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"
安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",51:"四川",52:"貴州"
,53:"雲南",54:"西藏",61:"陝西",62:"甘肅",63:"青海",64:"寧夏",65:"新疆",71:"台灣",81:"香港",82:"澳門",91:"國外"}
function cidInfo(sId){
var iSum=0
var info=""
if(!/^\d{17}(\d|x)$/i.test(sId))return false;
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地區";
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日";
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)return "Error:非法證號";
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}
</script>
-------------
正則表達式全集
中國電話號碼驗證
匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222
正則表達式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"
中國郵政編碼驗證
匹配形式如:215421
正則表達式 "d{6}"
電子郵件驗證
匹配形式如:[email protected]
正則表達式 "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"
身份證驗證
匹配形式如:15位或者18位身份證
正則表達式 "d{18}|d{15}"
常用數字驗證
正則表達式
"d{n}" n為規定長度
"d{n,m}" n到m的長度范圍
非法字元驗證
匹配非法字元如:< > & / ' |
正則表達式 [^<>&/|'\]+
日期驗證
匹配形式如:20030718,030718
范圍:1900--2099
正則表達式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
正則表達式是一個好東西,但是一般情況下,我們需要驗證的內容少之又少。下面是常用的17種正則表達式:
"^\d+$"//非負整數(正整數 + 0)
"^[0-9]*[1-9][0-9]*$"//正整數
"^((-\d+)|(0+))$"//非正整數(負整數 + 0)
"^-[0-9]*[1-9][0-9]*$"//負整數
"^-?\d+$"//整數
"^\d+(\.\d+)?$"//非負浮點數(正浮點數 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮點數
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮點數(負浮點數 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//負浮點數
"^(-?\d+)(\.\d+)?$"//浮點數
"^[A-Za-z]+$"//由26個英文字母組成的字元串
"^[A-Z]+$"//由26個英文字母的大寫組成的字元串
"^[a-z]+$"//由26個英文字母的小寫組成的字元串
"^[A-Za-z0-9]+$"//由數字和26個英文字母組成的字元串
"^\w+$"//由數字、26個英文字母或者下劃線組成的字元串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url
[code]電子郵件 : @"^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$"
HTTP URL : @"^[url]http://([/url][\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
郵編 : @"\d{6}"
身份證 : @"\d{18}|\d{15}"
整數 : @"^\d{1,}$"
數值 : @"^-?(0|\d+)(\.\d+)?$"
日期 : @"^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29))$)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))$"

5. Java寫一個函數判斷一個日期是否在本月之內

首先你要new date() , 再獲取這個date 的月開始時間 ,和結束時間 ,然後 比較就可以了。
/**
* 獲得本月的開始時間,即2012-01-01 00:00:00
*
* @return
*/
public Date getCurrentMonthStartTime() {
Calendar c = Calendar.getInstance();
Date now = null;
try {
c.set(Calendar.DATE, 1);
now = shortSdf.parse(shortSdf.format(c.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return now;
}

/**
* 當前月的結束時間,即2012-01-31 23:59:59
*
* @return
*/
public Date getCurrentMonthEndTime() {
Calendar c = Calendar.getInstance();
Date now = null;
try {
c.set(Calendar.DATE, 1);
c.add(Calendar.MONTH, 1);
c.add(Calendar.DATE, -1);
now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59");
} catch (Exception e) {
e.printStackTrace();
}
return now;
}
這種代碼,你自己再完善下

6. java中怎麼做到判斷輸入的日期是否合法

Java為了支持多語言,沒有固定的日期格式。你需要根據自己的需要指定日期格式,然後用DateFormat類或者SimpleDateFormat類來判斷是否是正確的日期格式。下面的例子供參考。更詳細的內容(比如yyyy,MM,dd各代表什麼)可以參考javadoc。

public class DateUtil
{
private static final SimpleDateFormat dateFormat = null;
static
{
// 指定日期格式為四位年/兩位月份/兩位日期,注意yyyy/MM/dd區分大小寫;
dateFormat = new SimpleDateFormat("yyyy/MM/dd");
// 設置lenient為false. 否則SimpleDateFormat會比較寬松地驗證日期,比如2007/02/29會被接受,並轉換成2007/03/01
dateFormat.setLenient(false);
}

public static boolean isValidDate(String s)
{
try
{
dateFormat.parse(s);
return true;
}
catch (Exception e)
{
// 如果throw java.text.ParseException或者NullPointerException,就說明格式不對
return false;
}
}

// 下面這個方法則可以將一個日期按照你指定的格式輸出
public static String formatDate(Date d)
{
return dateFormat.format(d);
}

}

閱讀全文

與java日期判斷合法相關的資料

熱點內容
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525
upx專用脫殼工具 瀏覽:171
cad圖紙怎麼以電子文件傳送 瀏覽:13
電腦pdf文件無法重命名怎麼辦 瀏覽:382
戴爾工業編程筆記本哪個好 瀏覽:932
網格線數據圖表格如何換數據 瀏覽:37
5s升級到ios10會卡嗎 瀏覽:166
excel共享後文件鎖定 瀏覽:392
判斷給定路徑是一個文件 瀏覽:365
耳機注冊表文件丟失win10 瀏覽:762
js獲取定位坐標系 瀏覽:84

友情鏈接