来自Sqlite的Android日期取决于GMT

时间:2013-02-11 12:05:25

标签: android

在Android中我使用SqlLite MyDate行,如DATETIME DEFAULT CURRENT_TIMESTAMP。但是当我正在阅读日期时,我会在一小时后得到日期,因为我在我的Android环境中使用GMT + 1

MyDate: 12:03 
Android date: 13:03

SqlLite阅读时如何将其转换为GMT + X,取决于Android环境?

编辑:

代码:

     Cursor cursor = logsDao.getAll(LogsDao.KEY_ID + " DESC", "100");
            String[] columns = new String[] { LogsDao.KEY_CONTENT, LogsDao.KEY_COMMENT, LogsDao.KEY_CREATED };
            int[] to = new int[] { R.id.logContext, R.id.logComment, R.id.logCreated };
            SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
            R.layout.log_entry, cursor, columns, to);
            setListAdapter(mAdapter);

1 个答案:

答案 0 :(得分:1)

我想首先你应该将检索到的数据存储在具有UCT时区的时间戳中,然后根据手机中的一个更新当前时区。

String s = "2013-02-11 12:03:00";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UCT"));
Date timestamp = null;
try {
    timestamp = df.parse(s);
    df.setTimeZone(TimeZone.getDefault());
} catch (ParseException e) {
    e.printStackTrace();
}

您需要implement a custom cursorAdapter并在方法bindView中操纵您的日期

@Override
    public void bindView(View v, Context context, Cursor c) {
        String date;
        date= c.getString(c.getColumnIndex(LogsDao.KEY_CREATED));

        //implement change of timezone

        TextView date_text = (TextView) v.findViewById(R.id.date);
        if (date_text != null) {
            date_text.setText(date);
        }
    }