java——判断日期是否在今天之前

本文介绍了一种精确到天的日期比较方法,通过将当前日期格式化为“yyyy-MM-dd”形式,再与目标日期进行比较,确保了日期比较的准确性。

这里说的日期是指字符串的日期格式,如“2014-10-15”,我们要判断这个日期是否在今天之前,网上看到好多判断的方法,都是拿这个日期转换成Date对象 然后与new Date()比较,使用comparetTo()  或者before()方法,其实这样做都会有点小问题,这样做忽略了一个小时分钟的比较,会出现错误,得不到正确的结果。

如果要得到正确的结果,应该将当前时间new Date() 转换成“yyyy-MM-dd”的格式,然后在将两者转换成date进行判断,代码如下:

java.util.Date nowdate = new java.util.Date();
					String date = DateUtils.formatDate(nowdate, "yyyy-MM-dd");
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",
							Locale.CHINA);
					Date d;
					try {
						d = sdf.parse(dateFormat);
						int flag = d.compareTo(DateUtils
								.formatDateFromeString(date));
						if (flag >= 0) {//当天及当天之后,<0就是在日期之前
							
						}
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}






### 使用 Java 验证日期有效性 为了验证给定字符串是否为有效的日期格式,在 Java 中可以采用多种方法。一种常见的方式是通过 `SimpleDateFormat` 类来解析并验证日期格式。 #### 方法一:使用 SimpleDateFormat 和 try-catch 结构 这种方法适用于简单的日期格式验证,例如 "yyyy-MM-dd" 或者其他自定义模式: ```java import java.text.ParseException; import java.text.SimpleDateFormat; public class DateValidator { private static final String DATE_PATTERN = "yyyy-MM-dd"; public static boolean isValidDate(String dateString) { SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN); dateFormat.setLenient(false); // 设置严格模式 try { dateFormat.parse(dateString.trim()); } catch (ParseException e) { return false; // 如果抛出异常,则表示不是有效日期 } return true; // 成功解析即为合法日期 } } ``` 此代码片段展示了如何利用 `SimpleDateFormat` 来判断输入的字符串是否符合指定的日期格式[^1]。需要注意的是,当设置 `setLenient(false)` 后,会强制严格按照所设定的日历字段解释日期值;如果不这样做,默认情况下可能会接受一些不合理的日期组合(如二月份有30天的情况)。 对于更复杂的场景或需要支持更多种不同的日期格式时,还可以考虑引入第三方库如 Joda-Time 或者 Java 8 及以上版本中的新特性——`DateTimeFormatter` API 进行处理。 另外值得注意的一点是在实际应用开发过程中应当尽量避免直接捕获所有类型的异常而应针对特定情况做相应处理以提高程序健壮性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值