Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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
Android格式化程序没有给出正确的时间_Android_Android Timepicker - Fatal编程技术网

Android格式化程序没有给出正确的时间

Android格式化程序没有给出正确的时间,android,android-timepicker,Android,Android Timepicker,所以我在Android中有这个代码 DateFormat formatter = new SimpleDateFormat("HH:mm", Locale.getDefault()); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(millisUntilFinished); textView.setText(f

所以我在Android中有这个代码

            DateFormat formatter = new SimpleDateFormat("HH:mm", Locale.getDefault());
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(millisUntilFinished);
            textView.setText(formatter.format(calendar.getTime()));
下面是我如何将值传递给这个方法的,例如,hours和minutes字符串是“8”和“30”

Calendar c = Calendar.getInstance();
            String s = ApplicationPreferences.getWakeUp(ActivityStage1.this);
            String[] separated = s.split("\\:");
            String hours = separated[0];
            String minutes = separated[1];
            c.add(Calendar.DAY_OF_MONTH, 1);
            c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hours));
            c.set(Calendar.MINUTE, Integer.parseInt(minutes));
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MILLISECOND, 0);
            long timeUntilStageTwo = (c.getTimeInMillis() - System.currentTimeMillis());
            startStageTwoTimer(timeUntilStageTwo);

因此,长MillsUntilFinished中的值类似于58441666,约为16小时20分钟,但由于某些原因,它在文本视图中最后显示的时间还有3小时,我甚至尝试将不同的区域设置传递给SimpleDataFormat,但仍然是一样的,为什么会发生这种情况?

您的
日历c
位于本地UTC+3时区,而系统时钟以UTC运行。因此相差3小时

在计算其毫秒值之前,可以使用在日历上设置显式时区


如果您希望自己进行计算,可以使用
timezone.getDefault()
获取用户的时区,然后使用
getOffset(time)
获取指定UTC时间的毫秒偏移。

尝试使用Locale.US。很小的机会,它将工作,但它的良好做法是使用明确的地区无论如何,事情是我设置的地区在第一次运行的应用程序,所以它要么是“en”或“es”,并与这两个作品使用相同的日期,而不是日历?请看我更新的问题,似乎传递给第二个方法的毫秒是错误的,那么如何知道用户所在的时区呢?我只在Launch设置了一个Locale对象,我在哪里使用这个getOffset方法,在getDefault之后它会给我错误,但仍然会给我带来问题,我只需要一个简单的转换器以小时和分钟为单位显示毫秒,而不是像Calendar或Date这样受时区影响的复杂类