Java 将小时和分钟转换为毫秒,并返回为HH:mm:ss格式
使用Java 将小时和分钟转换为毫秒,并返回为HH:mm:ss格式,java,datetime,time,Java,Datetime,Time,使用时间单位我想用以下代码将小时和分钟转换为毫秒: int hours = 01, minutes = 0; long milliseconds = TimeUnit.SECONDS.toMillis(TimeUnit.HOURS.toSeconds(hours) + TimeUnit.MINUTES.toSeconds(minutes)); 在3600000毫秒时工作正常 并使用SimpleDateFormat返回到HH:mm:ss格式: SimpleDateFormat formatte
时间单位
我想用以下代码将小时
和分钟
转换为毫秒
:
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);
}
这是因为你的时区不同。通过设定时区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);
我正期待着呢。
3600000
是一个持续时间(1小时,单位为毫秒),它不是自unix时代开始以来的毫秒数。这就是newdate()
所期望的。可能还有一些很好的时间分区。如果你已经有小时和分钟的值,为什么不自己格式化呢?类似于String.format(“%02d:%02d”,小时,分钟)
。还请注意,hours=01,
是八进制表示法,即不能写入08
等。