我有一个警报应用程序,我将警报存储到数据库中。所有报警都运行良好,值(毫秒)存储为正确的数字。现在我正试图从我的数据库中显示那些时间。我正在使用日历来恢复时间格式的时间:
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。我无法理解。
答案 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);