【发布时间】:2015-02-25 16:45:47
【问题描述】:
..然后将它们检索并显示为字符串?
我正在询问用户一些输入,我想存储提交该输入的日期(即日、月和年)和时间(即一天中的小时)。然后每个提交都保存在我的 SQlite 数据库中,然后从RecyclerView 中检索。
我至少面临两个问题。现在我在数据库中设置了两个TEXT 字段FIELD_DATE 和FIELD_TIME,我想在其中存储日期和时间的字符串表示形式,其格式取决于Android 用户区域设置。
根据我的阅读,android.text.format.DateFormat 应该对我有所帮助。所以我设置:
java.text.DateFormat dateFormat = DateFormat.getMediumDateFormat(getActivity());
java.text.DateFormat timeFormat = DateFormat.getTimeFormat(getActivity());
现在我想我应该在两个对象上调用 format(Date d) 来获取我的字符串,但我不知道我从哪里得到这个 Date 对象 - 甚至不知道我的两行是否正确。所以:
- 如何根据用户定义的(在操作系统级别)区域设置获取当前日期和时间的字符串表示形式?
也就是说(被问到),我想知道日期和时间的两个字段是否真的是我想要的。如前所述,最后我想展示一个RecyclerView 读取数据库。因为我还需要根据日期过滤掉条目,即
涉及上周的条目 // 上个月 // 全部 条目
所以我也在问:
考虑到需要轻松过滤掉属于上周的条目,双文本字段模式是否是存储日期和时间的正确选择?我应该更好地为日、月和年分别列吗?
在给定
FIELD_DATE/FIELD_TIME结构(或您可以建议的任何其他更好的结构)的情况下,如何查询数据库以仅包含上周的行?
我很纠结这三个问题。
编辑:终于想出了如何得到我最开始想要的字符串,就像实例化一个新的Date对象一样简单:
Date d = new Date();
String date = DateFormat.getMediumDateFormat(getActivity()).format(d);
String time = DateFormat.getTimeFormat(getActivity()).format(d);
现在我既需要显示这些字符串(这很简单,因为它们已经格式化了),也需要对数据库应用一些过滤器,比如属于上周的条目(这反过来会很简单自 1970 年以来以毫秒为单位的当前时间)。怎么办?
【问题讨论】:
-
我将它以字符串格式存储在我当前的项目中
标签: android sqlite date android-cursor