将 java getTime time 与表示日期的字符串进行比较



每次在 ab sqlite 数据库中执行特定方法时,我都会将特定方法的日期存储在 3 列中(一列用于日、月和年(。

现在,我想将其与用户使用该应用程序的精算日的日期进行比较。跟

Date currentTime = Calendar.getInstance().getTime()

我得到了这个日期,但我如何能够将其与我从数据库中获得的字符串进行比较?谢谢!

使用 java.time

您的问题与许多其他问题重复。所以简短...

使用 java.time 类,而不是麻烦的旧旧日期时间类。对于 Android,请使用 ThreeTen-Backport 和 ThreeTenABP 项目中的库。

获取今天的日期。

ZoneId z = ZoneId.of( "America/Montreal" ) )
LocalDate today = LocalDate.now( z );

到达部分日期。

int y = today.getYear() ;
int m = today.getMonthValue() ;
int d = today.getDayOfMonth() ;

查询数据库。

myPreparedStatement.setInt( 1 , y ) ;
myPreparedStatement.setInt( 2 , m ) ;
myPreparedStatement.setInt( 3 , d ) ;

正如其他人建议的那样,您应该在数据库中使用日期时间类型来存储日期时间值,而不仅仅是片段的整数。


关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧传统日期时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。

要了解更多信息,请参阅 Oracle 教程。并搜索堆栈溢出以获取许多示例和解释。规范为 JSR 310。

从哪里获得java.time类?

Java SE
  • 8Java SE 9及更高版本
    • 内置。
    • 具有捆绑实现的标准 Java API 的一部分。
    • Java 9添加了一些小功能和修复。
  • Java SE 6 和 Java SE 7 大部分
    • java.time 功能在ThreeTen-Backport中向后移植到 Java 6 和 7。
    • Android ThreeTenABP项目专门为Android改编了ThreeTen-Backport(如上所述(。
    • 请参阅如何使用ThreeTenABP...

ThreeTen-Extra项目通过额外的类扩展了java.time。这个项目是未来可能添加到java.time的试验场。你可以在这里找到一些有用的类,如IntervalYearWeekYearQuarter等。

试试这个:

SimpleDateFormat formattedDate = new SimpleDateFormat("dd/MM/yyyy");  
String strDate= formattedDate.format(date);  

它将为您提供模板中显示的日期。现在只需以相同的方式(dd/MM/yyyy(从SQLite数据中构建一个字符串,然后只需比较它们,如这篇文章所示:https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java

最新更新