我正在编写一个应用程序,用户可以在SQLite数据库中输入一些细节。我需要编写代码,输出数据库中存储数据的最后31天。
保存日期字符串的代码是: currentDateString = DateFormat.getDateInstance()。format(new Date());
以日期(2012年3月30日)的格式提供日期格式。
是否有将此数据格式更改为DD / MM / YYYY? (30/03/2012)
此字符串将保存到SQL数据库中,如下所示:
ContentValues dbcv = new ContentValues(); dbcv.put(KEY_DATE,date);
(currentDateTime String =上一课程中的日期)
我希望输出过去31天内数据库的每一行。
我该怎么做?
谢谢!
答案 0 :(得分:1)
首先,你只是在一个问题上做两个问题,我会尽力给你一个答案。
dd/MM/yyyy
select
操作通过SQLLite。看一下这个网页,因为它可以让您了解如何使用这些功能:SQLLite Date Functions 注意:当然,如果您仍想将它们存储为字符串,那么您将拥有的唯一解决方案是读取所有记录,将所有字符串解析回日期并使用{{1} } class来检查哪个记录超过31天,哪个记录不是。我宁愿做SQL查询而不是它,因为它有更好的性能(特别是在移动设备上)。
修改强>:
SQLLite和Android并不是我的优势,我做了一个小小的研究,我找到了几个帖子,其中人们实际上将它们存储为你最初开始做的字符串。如果Android上的SQLLite不支持按原样存储日期(与其他数据库一样),那么您的方案中的最佳选项可能是使用java.util.Calendar
值作为日期。查看Date
定义类,它有一个方法long
,它将日期值作为long值返回,您可以稍后使用该值创建日期的新实例(使用其构造函数)。 / p>
要在用户可读的内容中格式化该日期(当然是getTime
对象),Date
(或其任何实现)仍然是答案。
要执行您希望将日期存储为多久的查询,建议您查看DateUtils
中的Apache Commons Lang library类。在该类中,您将找到几个适用于日期的函数,因此,在创建查询之前,您需要获取最近31个日期中的行,您可以使用以下内容:
DateFormat
希望这有帮助。