使用TimeUnit
我希望使用以下代码将Hours
和Minutes
转换为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);
}
答案 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);