设置Calendar.DAY_OF_WEEK时出错

时间:2014-08-06 10:56:02

标签: java android date calendar parse-platform

我正在使用Parse,我在其中存储产品的用户评级。在用户仪表板上,我显示了用户本周,本月和总计已完成的评分数。

本周要回家的时间我使用以下代码:

public getWeeklyRatingsTask(final String userId, final RemoteCallListener callListener){

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_WEEK,1);

    Log.i("USER ID ===============++++++", userId);

    Date date = calendar.getTime();

    Log.i("DATE----====----====--", String.valueOf(date));
    ParseQuery<ParseObject> query = ParseQuery.getQuery("beer_rating");
    query.whereEqualTo("userId", userId);
    query.whereGreaterThanOrEqualTo("createdAt", date);
    query.countInBackground(new CountCallback() {
        @Override
        public void done(int beerCount, ParseException e) {

            if(e==null) {
                callListener.onRemoteCallComplete(beerCount);
                Log.i("WEEKLY BEER COUNT TASK  ================", String.valueOf(beerCount));
            }
            else{
                callListener.onRemoteErrorOccur(e);
            }
        }
    });
}
}

所以我在三台设备上测试它,xxhdpi(运行4.4.2),xhdpi(4.3)和hdpi(4.1.2)。

在xxhdpi和xhdpi上,这样可以正确计算每周计数。但是,在hdpi设备(samsung s3 mini)上它返回零。

因此,我在xxhdpi和xhdpi上记录Log.i("DATE----====----====--", String.valueOf(date));时会记录Sun Aug 03 11:50:04 GMT+01:00 2014但是hdpi是log Sun Aug 10 11:50:04 GMT+01:00 2014

如果有人可以帮我解决这个问题,我非常感谢...我确定我可以添加一张支票,看看是否存在版权问题,并采用不同的方法。

1 个答案:

答案 0 :(得分:0)

星期几计算取决于特定于语言环境的第一天设置。

在某些地区,星期日是一周的第一天。在其他一些语言环境中,星期日是一周的最后一天。将星期设置设置为星期日会将日历设置为当前星期日的星期日,可以根据区域设置向后或向前设置日历。

不要将星期日硬编码为星期的第一天,而是使用getFirstDayOfWeek()来获取当前特定区域设置的第一天。