clcurie_11 2013-07-12 05:26 采纳率: 6.7%
浏览 1979
已采纳

基于 GMT 的 SqlLite 中的 android 数据

在 android 的 SqlLite 中有 MyDate 行,如 DATETIME DEFAULT CURRENT_TIMESTAMP。但是当我读取数据时,一个小时后数据又返回了。我在 android 环境中使用 GMT + 1

MyDate: 12:03 
Android date: 13:03

当我从 SqlLite 读取数据时,根据 android 环境如何转换成 GMT + X

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条回答 默认 最新

  • nana4ever 2013-07-12 07:46
    关注

    首先你应该在 Timestamp 中存储检索数据,然后再更新当前的时间。

    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();
    }
    

    你需要实现一个自定义 cursorAdapter

    @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);
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘