导航:首页 > 编程语言 > java日期是否合法

java日期是否合法

发布时间:2024-06-17 01:30:22

java 判断一个字符串是不是一个合法的日期格式

(Stringstr){
booleanconvertSuccess=true;
//指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
SimpleDateFormatformat=newSimpleDateFormat("yyyy/MM/ddHH:mm");
try{
//设置lenient为false.否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
format.setLenient(false);
format.parse(str);
}catch(ParseExceptione){
//e.printStackTrace();
//如果throwjava.text.ParseException或者NullPointerException,就说明格式不对
convertSuccess=false;
}
returnconvertSuccess;
}

② java涓濡备綍鍒ゆ柇杈揿叆镄勬棩链熸槸钖﹀悎娉曪纻

import java.util.*;
import java.util.regex.*;
import java.text.*;

/** 杩欎釜鏄鎸夌収妤间富镄勬弿杩颁娇鐢ㄩ氲繃鍒ゆ柇瀛楃﹂獙璇佹椂闂村悎娉曟 */
public class DateUtils2 {

//娴嬭瘯浠g爜 begin
public static void main(String[] s){
//浠ヤ笅鏄娴嬭瘯浠g爜
test("20099-1-1");
test("20099-100-1");
test("20099-1-100");
test("2009-1-1");
test("2009-1-31");
test("2009-2-28");
test("2009-2-29");
test("2008-2-29");
}

private static void test(String stringdate){
System.out.println("杈揿叆[" + stringdate + "]鏄钖﹀悎娉:" + validate(stringdate));
}
//娴嬭瘯浠g爜 end

//==

/** 鍒ゆ柇涓绘柟娉 */
public static boolean validate(String dateString){
//浣跨敤姝e垯琛ㄨ揪寮 娴嬭瘯 瀛楃 绗﹀悎 dddd-dd-dd 镄勬牸寮(d琛ㄧず鏁板瓧)
Pattern p = Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");
Matcher m = p.matcher(dateString);
if(!m.matches()){ return false;}

//寰楀埌骞存湀镞
String[] array = dateString.split("-");
int year = Integer.valueOf(array[0]);
int month = Integer.valueOf(array[1]);
int day = Integer.valueOf(array[2]);

if(month<1 || month>12){ return false;}
int[] monthLengths = new int[]{0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(isLeapYear(year)){
monthLengths[2] = 29;
}else{
monthLengths[2] = 28;
}
int monthLength = monthLengths[month];
if(day<1 || day>monthLength){
return false;
}
return true;
}

/** 鏄钖︽槸闂板勾 */
private static boolean isLeapYear(int year){
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
}
}

镄 鍒氩ソ鍜屼綘镄勯梾棰树竴镙凤綖锝烇綖锝烇綖锝烇綖

③ 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为了支持多语言,没有固定的日期格式。你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式。

下面的例子供参考。更详细的内容可以参考javadoc。

publicclassDateUtil
{
=null;
static
{
dateFormat=newSimpleDateFormat("yyyy/MM/dd");
dateFormat.setLenient(false);
}

(Strings)
{
try
{
dateFormat.parse(s);
returntrue;
}
catch(Exceptione)
{
returnfalse;
}
}

publicstaticStringformatDate(Dated)
{
returndateFormat.format(d);
}

}
阅读全文

与java日期是否合法相关的资料

热点内容
家用云服务器如何注册 浏览:622
电脑文件夹打开变小了 浏览:514
程序员都特别在算法上有研究 浏览:362
爱疯app资源库如何不显示在主屏幕 浏览:984
服务器失联是为什么 浏览:842
风控算程序员 浏览:630
加密狗远程修改 浏览:723
我的世界网易服务器的地址是什么 浏览:924
地谷轮压缩机与艾默生 浏览:268
太力真空压缩袋好吗 浏览:915
中老年程序员写代码 浏览:16
加密货币白皮书怎么写 浏览:475
中文版的pdf 浏览:107
else在python的用法 浏览:549
if命令cmd 浏览:688
花书pdf 浏览:272
wps合成pdf文件 浏览:807
python教程pdf免费下载 浏览:959
程序员需求表 浏览:642
为什么安卓不能用qq登录 浏览:692