Android日历显示错误的时间

时间:2013-02-01 15:21:23

标签: java android database calendar milliseconds

我有一个警报应用程序,我将警报存储到数据库中。所有报警都运行良好,值(毫秒)存储为正确的数字。现在我正试图从我的数据库中显示那些时间。我正在使用日历来恢复时间格式的时间:

Calendar calendar = Calendar.getInstance();
SimpleDateFormat timeformat = new SimpleDateFormat("HH:mm");

milis = c.getInt(2);
calendar.setTimeInMillis(milis);
vreme = timeformat.format(calendar.getTime());
listavreme.add(vreme);

Cursor(已测试)中检索到Milis作为正确的数字,但是当我以HH:mm格式显示getTime()时,它总是会显示一个额外的小时。因此,如果milis值为:61200000(17:00),则日历将其显示为18:00。我无法理解。

2 个答案:

答案 0 :(得分:3)

我认为您必须将TimeZone设置为您的位置 尝试

timeformat.setTimeZone(TimeZone.getTimeZone("GMT"));

例如

答案 1 :(得分:1)

Calendar.getInstance()将绑定到TimeZone。如果您没有专门给它一个,它将使用JRE的默认值。我想你的是GMT + 1。因此,因为您(正确地)在没有时区的情况下保存您的原始毫克,它正在失去那个小时。尝试:

    TimeZone utc = TimeZone.getTimeZone("UTC");
    Calendar calendar = Calendar.getInstance(utc);