日期大小比较

实用正则表达式判断日期格式是否正确,转换成Date类型和当前日期比较大小

	/**
	 * compare to current date
	 * 
	 * @param date
	 * @return
	 */
	public static boolean isBefore(String date) {
		if (!isDate(date)) {
			return false;
		}

		Date dateCmp = null;
		try {
			dateCmp = DATE_FORMATTER1.get().parse(date);
			System.out.println(dateCmp);
		} catch (ParseException e) {
			try {
				dateCmp = DATE_FORMATTER2.get().parse(date);
				System.out.println(dateCmp);
			} catch (ParseException e1) {
				try {
					dateCmp = DATE_FORMATTER3.get().parse(date);
					System.out.println(dateCmp);
				} catch (ParseException e2) {
					throw new RuntimeException(e2);
				}
			}
		}
		try {
			Date dateNow = DATE_FORMATTER1.get().parse(DATE_FORMATTER1.get().format(new Date()));
			System.out.println(dateNow);
			System.out.println(dateCmp.compareTo(dateNow));
			if (0 < dateCmp.compareTo(dateNow)) {
				return false;
			}
		} catch (ParseException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	/**
	 * TODO 判断是否日期格式
	 * 
	 * @param strDate
	 * @return
	 */
	public static boolean isDate(String strDate) {
		String regex = "^((\\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]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";
		Pattern pattern = Pattern.compile(regex);
		Matcher m = pattern.matcher(strDate);
		if (m.matches()) {
			return true;
		} else {
			return false;
		}
	}

	/** yyyy-MM-dd */
	private static final ThreadLocal<DateFormat> DATE_FORMATTER1 = new ThreadLocal<DateFormat>() {
		protected DateFormat initialValue() {
			return new SimpleDateFormat("yyyy-MM-dd");
		}
	};

	/** yyyy/MM/dd */
	private static final ThreadLocal<DateFormat> DATE_FORMATTER2 = new ThreadLocal<DateFormat>() {
		protected DateFormat initialValue() {
			return new SimpleDateFormat("yyyy/MM/dd");
		}
	};

	/** yyyyMMdd */
	private static final ThreadLocal<DateFormat> DATE_FORMATTER3 = new ThreadLocal<DateFormat>() {
		protected DateFormat initialValue() {
			return new SimpleDateFormat("yyyyMMdd");
		}
	};

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值