Android格式化程序没有给出正确的时间
所以我在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
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这样受时区影响的复杂类