当前位置: 首页 > 面试题库 >

如何在Java中将毫秒转换为“ X分钟,x秒”?

申屠喜
2023-03-14
问题内容

我想记录System.currentTimeMillis()用户在我的程序中开始执行操作所用的时间。当他完成后,我会减去当前System.currentTimeMillis()start变量,我想向他们展示使用人类可读的格式经过诸如“XX小时XX分钟,XX秒”,甚至是“XX分钟,XX秒”的时间,因为它的不太可能花一个小时。

最好的方法是什么?


问题答案:

使用java.util.concurrent.TimeUnit类:

String.format("%d min, %d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

注意:TimeUnit是Java 1.5规范的一部分,但从toMinutesJava 1.6开始添加。

要为值0-9添加前导零,只需执行以下操作:

String.format("%02d min, %02d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

如果不支持TimeUnit或toMinutes(例如,在API版本9之前的Android上),请使用以下公式:

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
//etc...


 类似资料:
  • 问题内容: 我正在编写一个赛车应用程序,想要将大量毫秒转换为minutes:seconds.milliseconds(例如)。目前,我只是通过数学()进行运算,然后求余数并进一步除法,依此类推,但是我发现它时不时关闭1毫秒。我知道这听起来似乎没什么大不了的,但是我试图找到和的平均值,然后返回,这意味着它输入不正确,而应用程序的其余部分无法处理。 有没有一种方法使用或格式化毫秒到MM或类似的东西:s

  • 问题内容: 我在Microsoft SQL Server 2008R2中有一个bigint字段,其中充满了刻度线(单个刻度线代表一百纳秒或一千万分之一秒。在一毫秒内有10,000个刻度。) http://msdn.microsoft.com/zh- CN/library/system.datetime.ticks.aspx 我需要将所有记录的总和转换为Days:Hours:Minutes:Seco

  • 但这一个返回的是基于本地时间的毫秒。也不考虑ZoneID。 假设。如果我将其转换为具有区域id(“Asia/Kolkata”)的,那么我将得到()。然后以UTC转换为EpochMilli(1554854400000)=()。

  • 问题内容: 我需要将毫秒值85605304.3587转换为类似0d 18h 21m的值。不知道如何启动它,是否像C#中的SQL中有类似TimeSpan的东西? 问题答案: 您可以显式进行计算。我认为是这样: 注意:某些数据库使用代替。

  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }

  • 我是Momentjs的新手。我试着用它把毫秒转换成小时和分钟。下面,x是毫秒 有人能帮忙吗?