我有一个时间字符串“ 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();
}
CountDownTimer:
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));
}
答案 0 :(得分:0)
我认为您遇到时区问题。字符串“ 00:01:00”未指定世界时间,因为其上没有时区。解析将在某个默认时区完成,并且您的偏移量显然为3(我的似乎是-5)。
如果使用(“ HH:mm:ss z”)解析“ 00:01:00 GMT”,则将得到期望的60000毫秒。
答案 1 :(得分:0)
实例化格式化程序后,尝试设置时区,如下所示:
DateFormat formatter = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH);
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
或者如果您需要本地时区,则:
formatter.setTimeZone(Calendar.getInstance().getTimeZone());