Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示错误时间的Android日历_Java_Android_Database_Calendar_Milliseconds - Fatal编程技术网

Java 显示错误时间的Android日历

Java 显示错误时间的Android日历,java,android,database,calendar,milliseconds,Java,Android,Database,Calendar,Milliseconds,我有一个报警应用程序,我将报警存储到数据库中。所有报警工作正常,数值(毫秒)存储为正确的数字。现在我正试图从我的数据库中显示这些时间。我使用日历以时间格式检索时间: Calendar calendar = Calendar.getInstance(); SimpleDateFormat timeformat = new SimpleDateFormat("HH:mm"); milis = c.getInt(2); calendar.setTimeInMillis(milis); vreme =

我有一个报警应用程序,我将报警存储到数据库中。所有报警工作正常,数值(毫秒)存储为正确的数字。现在我正试图从我的数据库中显示这些时间。我使用日历以时间格式检索时间:

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

mili是从
光标
(已测试)中检索到的正确数字,但是当我以HH:mm格式显示
getTime()
时,它总是显示一个额外的小时。因此,如果milis值为:61200000(17:00),日历将其显示为18:00。我想不出来。

我想你必须把时区设置到你的位置 试一试


例如

我认为您必须将时区设置为您所在的位置 试一试

例如,Calendar.getInstance()将绑定到时区。如果您没有明确地给它一个,它将使用JRE的默认值。我猜你的是格林尼治标准时间+1。因此,因为你(正确地)在没有时区的情况下保存了原始毫秒数,所以它正在损失这一小时。尝试:

TimeZone utc = TimeZone.getTimeZone("UTC"); Calendar calendar = Calendar.getInstance(utc); 时区utc=时区。getTimeZone(“utc”); 日历=Calendar.getInstance(utc); Calendar.getInstance()将绑定到时区。如果您没有明确地给它一个,它将使用JRE的默认值。我猜你的是格林尼治标准时间+1。因此,因为你(正确地)在没有时区的情况下保存了原始毫秒数,所以它正在损失这一小时。尝试:

TimeZone utc = TimeZone.getTimeZone("UTC"); Calendar calendar = Calendar.getInstance(utc); 时区utc=时区。getTimeZone(“utc”); 日历=Calendar.getInstance(utc);
所以最好是把它保存在已经绑定到时区的地方你做得对。始终保存没有时区的日期和时间。时区应该只是UI的装饰——仅此而已。所有存储的内容都应该是纯UTC格式。所以我在处理用户问题时只是设置了时区?你知道有什么奇怪吗?我的时区是gmt+1,当然是手机,但当我把calendar.setTimeZone(timezone.getTimeZone(“gmt+1”);`同样的情况也会发生(时间显示时额外增加1小时),它只适用于GMT,为什么?我想我必须将它设置为我的时区?嗯,只有当我将时区设置为我的格式而不是日历时,它才起作用,所以最好将它保存为已绑定到时区的状态?不你做得对。始终保存没有时区的日期和时间。时区应该只是UI的装饰——仅此而已。所有存储的内容都应该是纯UTC格式。所以我在处理用户问题时只是设置了时区?你知道有什么奇怪吗?我的时区是gmt+1,当然是手机,但当我把calendar.setTimeZone(timezone.getTimeZone(“gmt+1”);`同样的情况也会发生(时间显示时额外增加1小时),它只适用于GMT,为什么?我想我必须把它设置为我的时区?嗯,只有当我把时区设置为我的格式而不是日历时,它才起作用