电话
400 9058 355
本文介绍使用现代 java 8+ 的 `java.time` api(而非过时的 `simpledateformat` 和 `date`)安全、准确地解析和比较形如 "31.01.2025" 的字符串日期与当前日期,判断其是否为严格意义上的未来日期(即大于今日,含明日)。
在 Java 开发中,处理日期字符串(如 "31.01.2025")时,若仍依赖 SimpleDateFormat 和 Date 类,不仅易出错(如线程不安全、解析歧义、时区干扰),还会因 Date.toString() 默认输出完整带时分秒的格式(如 "Fri Jan 31 00:00:00 CET 2025")造成误解——这并非格式化失败,而是 Date 对象本身不包含格式信息,仅 toString() 方法做了默认渲染。
✅ 推荐方案:使用 java.time 时间 API(JSR-310),语义清晰、不可变、线程安全,且天然支持纯日期逻辑(无需时间/时区干扰):
String profileUpdateChangeDate = "31.01.2025"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); LocalDate changeDate = LocalDate.parse(profileUpdateChangeDate, formatter); LocalDate today = LocalDate.now(); // 判断是否为未来日期(即 changeDate > today) boolean isFuture = today.isBefore(changeDate); System.out.printf("'%s' 是未来日期吗?%s%n", profileUpdateChangeDate, isFuture);
? 关键说明:
⚠️ 注意事项:
总结:用 LocalDate.parse(str, formatter) 替代 SimpleDateFormat.parse(),用 LocalDate.now() 替代 new Date(),用 isBefore()/isAfter() 替代 compareTo() 或毫秒差值计算——三步即可写出健壮、可读、符合现代 Java 实践的日期比较逻辑。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...