有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

使用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) 个答案

  1. # 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);