本文目錄一覽:
- 1、使用Java如何驗證所以日期是否正確
- 2、java中如何判斷輸入的日期是否合法?
- 3、java中怎麼判斷輸入的日期是否合法?
- 4、java判斷某日期 是否超過今天
- 5、java判斷是否是日期
- 6、java 判斷某個日期是不是今天
使用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中如何判斷輸入的日期是否合法?
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中怎麼判斷輸入的日期是否合法?
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(month1 || 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(day1 || daymonthLength){
return false;
}
return true;
}
/** 是否是閏年 */
private static boolean isLeapYear(int year){
return ((year % 4 == 0 year % 100 != 0) || year % 400 == 0) ;
}
}
java判斷某日期 是否超過今天
一、使用Date類創建日期對象
Date date1 = new Date(2017, 5, 20);
二、通過Calendar獲得當前日期
Date now;
Calendar c = Calendar.getInstance();
now = new Date(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, c.get(Calendar.DAY_OF_MONTH));
三、使用Date類的after()方法判斷一個日期是否在另一個日期的後面
if(date1.after(now)) {
System.out.println(“超過了今天”);
}
else {
System.out.println(“沒有超過今天”);
}
四、完整的Java程序
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date1 = new Date(2017, 5, 20);
Date now;
Calendar c = Calendar.getInstance();
now = new Date(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, c.get(Calendar.DAY_OF_MONTH));
if(date1.after(now)) {
System.out.println(“超過了今天”);
}
else {
System.out.println(“沒有超過今天”);
}
}
}
五、運行測試
沒有超過今天
java判斷是否是日期
樓主提出的問題有點片面,我的理解是,你是不是想判斷字符串是不是日期格式?如果已經是日期類型,那就不需要判斷了,對把。判斷給定字符串是不是日期我給你提供兩種解決思路,一種是用正則,代碼我給你寫好了。
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.compile(rexp);
Matcher mat = pat.matcher(date);
boolean dateType = mat.matches();
return dateType;
}
參數就是你要判斷的日期字符串,返回布爾值;
另一種方式就是:玩字符串正則才是王道嘛!希望採納
public boolean isValidDate(String str) {
boolean convertSuccess = true;
// 指定日期格式為四位年/兩位月份/兩位日期,注意yyyy/MM/dd區分大小寫;
//如果想判斷格式為yyyy-MM-dd,需要寫成-分隔符的形式
SimpleDateFormat format = new SimpleDateFormat(“yyyy/MM/dd HH:mm”);
try {
format.setLenient(false);
format.parse(str);
} catch (ParseException e) {
// e.printStackTrace();
// 如果拋出ParseException或者NullPointerException,就說明格式不對
convertSuccess = false;
}
return convertSuccess;
}
推薦使用正則,
java 判斷某個日期是不是今天
給您寫了一遍。
代碼:
package demo;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* 開發公司:SOJSON在線工具 p
* 版權所有:©
* 博客地址:
* p
*
* 注釋寫這裡
*
* p
*
* 區分 責任人 日期說明br/
* 創建 周柏成 2017年4月18日 br/
*
* @author zhou-baicheng
* @email so@sojson.com
* @version 1.0,2017年4月18日 br/
*
*/
public class Main {
public static void main(String[] args) {
//調用
boolean result = isNow(new Date());
System.out.println( result?”是今天。”:”不是今天。” );
}
/**
* 判斷時間是不是今天
* @param date
* @return 是返回true,不是返回false
*/
private static boolean isNow(Date date) {
//當前時間
Date now = new Date();
SimpleDateFormat sf = new SimpleDateFormat(“yyyyMMdd”);
//獲取今天的日期
String nowDay = sf.format(now);
//對比的時間
String day = sf.format(date);
return day.equals(nowDay);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/236157.html