我有一个时间字符串“00:01:00”。当我通过 SimpleDateFormat("HH:mm:ss) 将其转换为 long 时,我得到 10860000 毫秒,相当于 03:01:00。对于“00:59:00”,我得到“03:57:00”,所以我不知道发生了什么,但它使我的毫秒数增加了 3 小时。代码:String time = String.format("%02d",hourOfDay) + ":" + String.format("%02d", minute) + ":" + String.format("%02d", seconds);tvTimer.setText(time);try { DateFormat formatter = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH); Time timeValue = new Time(formatter.parse(time).getTime()); long initTimer = timeValue.getTime} catch (ParseException e) { e.printStackTrace();}倒计时器:timer = new CountDownTimer(initTimer, 1000) { @Override public void onTick(long l) { long secondsInMilli = initTimer / 1000; long minutesInMilli = secondsInMilli / 60; long hoursInMilli = minutesInMilli / 60; long elapsedSeconds = secondsInMilli % 60; long elapsedMinutes = minutesInMilli % 60; long elapsedHours = hoursInMilli % 60; tvTimer.setText(String.format("%02d", elapsedHours) + ":" + String.format("%02d", elapsedMinutes) +":" + String.format("%02d", elapsedSeconds)); }
2 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
我认为你有一个时区问题。字符串“00:01:00”没有指定世界时间,因为上面没有时区。解析将在某个默认时区完成,您的偏移量显然是 3(我的似乎是 -5)。
如果您使用 ("HH:mm:ss z") 解析 "00:01:00 GMT",您将获得预期的 60000 毫秒。
莫回无
TA贡献1865条经验 获得超7个赞
在实例化格式化程序后尝试设置时区,如下所示:
DateFormat formatter = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
或者如果您需要本地时区,则:
formatter.setTimeZone(Calendar.getInstance().getTimeZone());
添加回答
举报
0/150
提交
取消