0
使用TimeUnit
我想转换Hours
和Minutes
到Milliseconds
与下面的代码:转换小时和分钟成毫秒,并返回到HH:mm:ss格式
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
。
UPDATE:
其实我使用上面的代码创建一个使用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);
}
我期待着那个。 '3600000'是一个持续时间(1小时以毫秒计),它不是自Unix时代开始以来的毫秒数。这是'new Date()'期望的。也有一些很好的时间分区可能涉及。 –
如果你已经有小时和分钟的值,为什么不自己格式化呢?类似于String.format(“%02d:%02d”,小时,分钟)''。还要注意'hours = 01,'是八进制符号,也就是说你不能写'08'等。 – Thomas