「java时间合法」java时间规则
今天给各位分享java时间合法的知识,其中也会对java时间规则进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中如何判断输入的日期是否合法?
- 2、java如何对生日(yyyymmdd)进行合法性判断?
- 3、java中怎么做到判断输入的日期是否合法
- 4、java中如何判断输入的日期是否合法
- 5、JAVA 怎么判断一个字符串是不是一个合法的日期格式??
- 6、如何验证 java swt text中输入的时间格式是否正确
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时间规则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。