【发布时间】:2014-07-02 05:20:36
【问题描述】:
在我的应用程序中,我将(任务的)创建日期和时间作为日期时间字段存储在数据库中。
在其中一项活动中,我试图显示创建的所有任务列表,并且 我需要创建日期(只是日期而不是日期时间)作为我的第一列。
我使用了一个列表视图和简单的光标适配器来填充列表视图。
private String [] from = { "CREATION_DATE" , "_id" , DataBaseHandler.DESCRIPTION };
private int[] to ={R.id.fh_list_entryDate ,R.id.fh_list_credits, R.id.fh_desc };
//date string will be in yyyy/mm/dd format.
fh_cursor= dbHandler.getAllHistory(bun.getString("st_date"),bun.getString("end_date"));
dataAdapter = new SimpleCursorAdapter(this,R.layout.full_history_list,fh_cursor,from,to,0);
listView.setAdapter(dataAdapter);
“fh_list_entryDate”的 xml
<EditText
android:id="@+id/fh_list_entryDate"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:inputType="date"
android:focusable="false"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium" />
在 getAllHistory 方法中,查询如下所示:
String historyQuery = "SELECT CREATION_DATE , CREDITS _id , DESCRIPTION FROM "+
ACTIVITY_DETAILS_TABLE_NAME +
" WHERE START_DT > ? "+" AND END_DT < ? ";
fh_cursor = sqlDB.rawQuery(historyQuery, new String[] {st_date,end_date});
如果我使用上面的代码,我会在第一列中看到“Tue Jul 01 23:21:05 GMT-04:00 2014”。
我阅读了“strftime”并将查询修改为:
String historyQuery = "SELECT strftime('%Y-%m-%d', CREATION_DATE) CREATION_DATE,
CREDITS _id , DESCRIPTION FROM "+
ACTIVITY_DETAILS_TABLE_NAME +
" WHERE START_DT > ? "+" AND END_DT < ? ";
然后我得到 null 而不是 date。
我的要求是只显示日期部分。最好采用 yyyy/mm/dd 格式。或 yyyy-mm-dd 格式。
我猜一个选项是我们可以迭代 fh_cursor 并使用 java 代码中的 SimpleDateFormat 将日期时间转换为所需格式,而不是使用 SimpleCursorAdapter。 我不想那样做。有没有办法让我只修改查询?
【问题讨论】: