在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);
答案 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);
}
}