将小时和分钟转换为毫秒并返回HH:mm:ss格式

时间:2016-11-10 12:03:49

标签: java datetime time

使用TimeUnit我希望使用以下代码将HoursMinutes转换为Milliseconds

int hours = 01, minutes = 0; 
long milliseconds = TimeUnit.SECONDS.toMillis(TimeUnit.HOURS.toSeconds(hours) + TimeUnit.MINUTES.toSeconds(minutes));

使用3600000毫秒

工作正常

使用SimpleDateFormat返回HH:mm:ss格式:

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
Date date = new Date(milliseconds);
String returnFormat = formatter.format(date); //Final Result.

这给了我09:59:59的结果,这不是预期的输出。

我很困惑,上面的代码出了什么问题?我期待01:00:00输出。

更新

实际上我正在使用上面的代码使用Handler post.delayed函数创建一个简单的倒数计时器。

...
@Override
public void run() {
    milliseconds -= 1000; //Remove 1 Seconds
    handler.postDelayed(this,1000); //Delay in 1 Seconds
    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); //Create Time Formatting
    Date date = new Date(milliseconds); //Put the milliseconds into Format
    String returnFormat = formatter.format(date)); 
    Log.w("COUNTDOWN", returnFormat);
}

1 个答案:

答案 0 :(得分:1)

这是因为您的时区不同。通过制作时区GMT,您将能够获得预期的结果。使用以下代码段。

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date(milliseconds);
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
String returnFormat = formatter.format(date); //Final Result.
System.out.println(returnFormat);