SQLITE下24小时数据

时间:2015-03-07 23:52:59

标签: android sqlite calendar timezone

我希望从我的桌子中选择接下来24小时的游戏:

String sql = "SELECT * FROM teamstable 
             WHERE ((teamdate >= datetime ('now'))
             AND (teamdate < datetime('now','+24 hours')))
             ORDER BY teamdate";

Cursor cursor = db.rawQuery(sql, null);

但结果很奇怪,因为我只有明天的比赛:

String teamDate48 = "2015-03-08 21:30";
.
.
String teamDate54 = "2015-03-08 13:00";

我今天也应该有游戏:

String teamDate41 = "2015-03-07 20:30";
.
.
String teamDate47 = "2015-03-07 19:00";

如果相关,我也会在此操作中将日期格式化为当地时间:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

Date datex = null;
try 
{
    sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
    datex = sdf.parse(tdate111);
    System.out.println(datex);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    sdf.setTimeZone(TimeZone.getDefault());

我的猜测是:问题是由我的手机(GMT)和存储日期(America / New_York)之间的时区差异引起的。这会导致这个吗?

1 个答案:

答案 0 :(得分:1)

documentation说明了日期/时间功能:

  

使用通用协调时间(UTC)。

直接支持的唯一其他时区是操作系统报告的时区,但在您的情况下,它是相同的。

要在时区之间进行转换,请使用修饰符添加/减去所需的小时数。