每次在 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.Date
、Calendar
和SimpleDateFormat
。
Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。
要了解更多信息,请参阅 Oracle 教程。并搜索堆栈溢出以获取许多示例和解释。规范为 JSR 310。
从哪里获得java.time类?
Java SE- 8、Java 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的试验场。你可以在这里找到一些有用的类,如Interval
、YearWeek
、YearQuarter
等。
试试这个:
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