「java时间合法」java时间规则

博主:adminadmin 2023-03-18 17:58:08 337

今天给各位分享java时间合法的知识,其中也会对java时间规则进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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号。

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类来判断是否是正确的日期格式。下面的例子供参考。更详细的内容(比如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中如何判断输入的日期是否合法

import java.util.*;

import java.util.regex.*;

import java.text.*;

/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */

public class DateUtils2 {

//测试代码 begin

public static void main(String[] s){

//以下是测试代码

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

}

//测试代码 end

//==

/** 判断主方法 */

public static boolean validate(String dateString){

//使用正则表达式 测试 字符 符合 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(month12){ 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(daymonthLength){

return false;

}

return true;

}

/** 是否是闰年 */

private static boolean isLeapYear(int year){

return ((year % 4 == 0 year % 100 != 0) || year % 400 == 0) ;

}

}

copy的 刚好和你的问题一样~~~~~~~

JAVA 怎么判断一个字符串是不是一个合法的日期格式??

日期格式有很多种,最好自己固定格式,再用正则判断是否符合你的格式

如何验证 java swt text中输入的时间格式是否正确

/*

*

* 如何验证 java swt text中输入的时间格式是否正确

*/

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Group;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Text;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

public class CheckInputTimeWithSWT

{

private Shell shell;

private Text inputTimeText;

private Text checkResutlText;

private Button checkButton;

//标准时间格式,如 :2011-01-01 13:01:59

//年接受输入4位,或只输入后两位,月,日,时,分,秒接受输入两位(不足两位高位补0),或者只输入一位

//当采用12小时制后面需要加上 am 或者 pm ,如  2011-01-01 1:01:59 pm,否则默认 24 小时制

static String STANDART_TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";

//简单的筛选,还有进一步处理

static String STANDART_TIME_FORMAT_REGEX =

"(\\d{4}|\\d{2})-"   +

"(\\d|\\d{2})-"      +

"(\\d|\\d{2})\\s"    +

"(\\d|\\d{2}):"   +

"(\\d|\\d{2}):"   +

"(\\d|\\d{2})"       +

"(\\sam|\\spm|\\sAM\\sPM|)"

;

public void open() {

final Display display = new Display();

shell = new Shell();

shell.setSize(380, 250);

shell.setText("Check Time");

final Group group = new Group(shell, SWT.NONE);

group.setText("");

group.setBounds(20, 20, 320, 160);

//时间输入便签及输入文本框

final Label inputTimeLabel = new Label(group, SWT.NONE);

inputTimeLabel.setBounds(20, 20, 100, 25);

inputTimeLabel.setText("Input Time:");

inputTimeText = new Text(group, SWT.BORDER | SWT.READ_ONLY);

inputTimeText.setBounds(150, 20, 150, 25);

inputTimeText.setEditable(true);

//检查结果便签及显示文本框

final Label checkResultLabel = new Label(group, SWT.NONE);

checkResultLabel.setBounds(20, 65, 100, 25);

checkResultLabel.setText("Check Result:");

checkResutlText = new Text(group, SWT.BORDER | SWT.READ_ONLY);

checkResutlText.setBounds(150, 65, 150, 25);

checkResutlText.setEditable(false);

//按钮

checkButton = new Button(group, SWT.NONE);

checkButton.addSelectionListener

(

new SelectionAdapter()

{

public void widgetSelected(SelectionEvent e)

{

checkTime();

}

}

);

checkButton.setBounds(20, 105, 75, 25);

checkButton.setText("CHECK");

shell.open();

while (!shell.isDisposed())

{

if (!display.readAndDispatch())

{

display.sleep();

}

}

}

//时间格式检查

private void checkTime() {

String time = inputTimeText.getText().trim();

int year=0,month=0,day=0,hour=0,minute=0,second=0;

boolean isLeapYear;

boolean is12Pattern = true;

boolean isMorning = true;

boolean isLegalTime = false;

if(time.matches(STANDART_TIME_FORMAT_REGEX))

{

isLegalTime = true;

//年

year = Integer.parseInt(time.substring(0,time.indexOf('-')));

//月

time = time.substring(time.indexOf('-')+1);

month = Integer.parseInt(time.substring(0,time.indexOf('-')));

//日

time = time.substring(time.indexOf('-')+1);

day = Integer.parseInt(time.substring(0,time.indexOf(' ')));

//时

time = time.substring(time.indexOf(' ')+1);

hour = Integer.parseInt(time.substring(0,time.indexOf(':')));

//分

time = time.substring(time.indexOf(':')+1);

minute = Integer.parseInt(time.substring(0,time.indexOf(':')));

time = time.substring(time.indexOf(':')+1);

//秒

//24小时制

if(-1 == time.indexOf(' '))

{

is12Pattern = false;

second = Integer.parseInt(time);

}

//12小时制

else

{

is12Pattern = true;

second = Integer.parseInt(time.substring(0,time.indexOf(' ')));

time = time.substring(time.indexOf(' ')+1);

if(time.endsWith("am"))

{

isMorning = true;

}

else

{

isMorning = false;

}

}

//是否闰年

if( (year%400==0) ||(year%100!=0  year%4==0))

{

isLeapYear = true;

}

else

{

isLeapYear = false;

}

//判断月份

if(month  1 || month  12)

{

isLegalTime = false;

}

else

{

if(

( month == 2  isLeapYear  day =1  day = 29) ||

( month == 2  !isLeapYear  day =1  day = 28) ||

( month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12  day =1  day = 31) ||

( month == 4 || month == 6 || month == 9 || month == 11  day =1  day = 30)

)

{

if( (is12Pattern  hour = 0  hour = 12 ) || (!is12Pattern  hour = 0  hour = 23 ))

{

if(minute = 0  minute = 59  second = 0  second =59 )

{

isLegalTime = true;

}

else

{

isLegalTime = false;

}

}

else

{

isLegalTime = false;

}

}

else

{

isLegalTime = false;

}

}

}

if(isLegalTime)

{

//将合法的输入时间标准化

String standardTime ="";

//标准年

if(year = 10)

{

standardTime += "200" + String.valueOf(year);

}

else if(year = 100)

{

standardTime += "20" + String.valueOf(year);

}

else

{

standardTime += String.valueOf(year);

}

standardTime += "-";

//标准月

standardTime += ( (month=9)  ? "0"  + String.valueOf(month)     : String.valueOf(month)) + "-";

//标准日

standardTime += ( (day=9)    ? "0"  + String.valueOf(day)       : String.valueOf(day) ) + " ";

//标准时

standardTime += ( (hour=9)   ? "0"  + String.valueOf(hour)   : String.valueOf(hour) ) + ":";

//标准分

standardTime += ( (minute=9) ? "0"  + String.valueOf(minute) : String.valueOf(minute) ) + ":";

//标准秒

standardTime += ( (second=9) ? "0"  + String.valueOf(second) : String.valueOf(second) )  ;

//标准 12 小时后缀

if(is12Pattern)

{

if(isMorning)

{

standardTime += " AM";

}

else

{

standardTime += " PM";

}

}

checkResutlText.setText(standardTime);

}

else

{

//提示标准的时间格式

checkResutlText.setText(STANDART_TIME_FORMAT);

}

}

public static void main(String[] args) {

CheckInputTimeWithSWT window = new CheckInputTimeWithSWT();

window.open();

}

}

/*

*  legal:

*  11-3-2 1:8:9 am

*  11-3-2 1:8:9 pm

*  11-03-02 01:08:09 am

*  00-2-29 13:14:15

*

*  illegal:

*  00-2-29 13:14:15 pm

*  00-2-30 13:14:15

*  00-4-31 13:14:15

*  00-4-30 11:59:60 am

*/

关于java时间合法和java时间规则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。