2

我首先将 SQLite 数据库中的信息检索到游标中。

游标包含格式为的时间戳列:yyyy-MM-dd HH:mm:ss.SSS例如,2010-08-27 21:25:30.575

检索后,我设置了一个SimpleCursorAdapter这样的(代码简化):

SimpleCursorAdapter adapter = 
            new SimpleCursorAdapter(this, R.layout.row_layout, cursor, new String{KEY_TITLE, KEY_TIMESTAMP}, new int[]{ R.id.title, R.id.timestamp } );
    setListAdapter(adapter);

该代码成功地以上述格式显示时间和日期,但我想仅以 DD/MM/YYYY 格式显示日期(或者如果可能的话,可能是基于区域设置的用户格式)。

如何干预 SimpleCursorAdapter 以将日期更改为我喜欢的格式?

注意,如果可以简化问题,我愿意更改将信息传递给适配器的方式。如果 SQLite 具有内置格式化程序,我也不介意更改光标的 SQLite 查询。

4

3 回答 3

1

查询方式:

SELECT strftime('%d/%m/%Y',TimeStampField) FROM MyTable...

因为 SQLite 将返回所有字段的字符串,所以您需要为 SimpleCursorAdaptor 做的是解析日期然后转换它。我很想说,首先由 SQLite 完成它更简单、更干净。

于 2010-08-27T21:52:22.883 回答
1

这是我的最终解决方案。

请注意,这是一个让 SQLite 重新格式化检索日期的 hack。更好的解决方案是存储日期并自行检索。

具有检索键的字段:

public static final String KEY_TIMESTAMP = "timestamp";
public static final String KEY_DATESTAMP = 
              "strftime('%d/%m/%Y'," + KEY_TIMESTAMP +")";

像往常一样将时间戳存储在数据库条目中:

String timeStamp = new Timestamp( 
                Calendar.getInstance().getTimeInMillis() ).toString();

ContentValues initialValues = new ContentValues();
...
initialValues.put(KEY_TIMESTAMP, timeStamp);

return mDb.insert(DATABASE_TABLE, null, initialValues);

其中 mDb 是一个 SQLiteDatabase 对象。

以格式检索时间戳时yyyy-MM-dd HH:mm:ss.SSS,请使用常规KEY_TIMESTAMP.

以下方法检索其中包含两个项目的行。使用适当的密钥进行检索。

public Cursor fetchItem(long rowId) throws SQLException {
        Cursor cursor =
                mDb.query(true, DATABASE_TABLE, 
                        new String[] {KEY_ITEMID,KEY_TIMESTAMP,KEY_DATESTAMP},
                        KEY_ITEMID + "=" + rowId, 
                        null, null, null, null, null
                );
        return cursor;
}

使用适当的密钥进行检索

mTimestamp = quote.getString(
                quote.getColumnIndex(QuotesDbAdapter.KEY_TIMESTAMP)));
mDatestamp = quote.getString(
                    quote.getColumnIndex(QuotesDbAdapter.KEY_DATESTAMP)));
于 2010-09-02T01:25:50.270 回答
0

日期的格式化也可以使用 ViewBinder 类来完成。一个很好的例子在这里:http ://ambiguiti.es/2009/04/making-custom-rows-in-android-listviews/

于 2011-01-03T05:14:51.300 回答