日期比较java失败
在比较未来的日子时,Java出现了一些失败。如果可以,请查看代码日期比较java失败,java,date,simpledateformat,Java,Date,Simpledateformat,在比较未来的日子时,Java出现了一些失败。如果可以,请查看代码 DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); Date date = dateFormat.parse("2258-11-01"); Date date1 = dateFormat.parse("2258-10-31"); System.out.println(date.after(date1)); 输出为:false 有人知道它为什么不起作用吗?m格式
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date date = dateFormat.parse("2258-11-01");
Date date1 = dateFormat.parse("2258-10-31");
System.out.println(date.after(date1));
输出为:false
有人知道它为什么不起作用吗?m格式表示一小时中的一分钟。您可能打算使用
M
,表示一年中的月份:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
您应该使用大写MM表示月份,因为它不像您希望的那样解析
new SimpleDateFormat("yyyy-MM-dd");
tl;博士
使用现代课程,使其恰巧处于最佳状态
真的
细节
正如其他人提到的,格式模式区分大小写,而您的格式模式不正确
另一个问题是,您不适当地将仅日期的值压缩到一个日期类型中,该日期的时间为UTC
此外,您正在使用可怕的旧日期时间类,这些类在几年前被现代java.time类所取代
您的输入字符串恰好符合优秀的标准。默认情况下,java.time类在解析/生成字符串时使用这些格式。因此,甚至不需要费心定义格式化模式
LocalDate ld1 = LocalDate.parse( "2258-11-01" ) ;
LocalDate ld2 = LocalDate.parse( "2258-10-31" ) ;
比较一下
boolean isAfter = ld1.isAfter( ld2 ) ; // true
所有这些都已经在堆栈溢出上讨论过很多次了。请学习在发布前彻底搜索堆栈溢出
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类
从哪里获得java.time类
- 、和更高版本-标准Java API的一部分,带有捆绑实现。
- Java9添加了一些次要功能和修复
- 及
- 大多数java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(您应该使用
,月份字符无效,yyyy-MM-dd
代表分钟,因此您分别使用了1月1日和1月31日的00:11和00:10,检查模式语法文档是您的朋友:FYI,非常麻烦的旧日期时间类,例如,m
ar现在,Java8和更高版本中内置的类取代了e。java.text.SimpleDateFormat
boolean isAfter = ld1.isAfter( ld2 ) ; // true