将long转换为HH:mm:ss并将其显示在标签中的最有效方法是什么?

Sta*_*ovy 1 java format time swing jlabel

我希望以HH:mm:ss不使用任何外部库的格式显示我的JLabel显示值.(标签将每秒更新)

例如,以下输入以秒为单位,所需的输出如下:

Seconds:                             Output: 
--------------------------------------------------
long seconds = 0                    00:00:00
long seconds = 5                    00:00:05
long seconds = 500                  00:08:20
long seconds = 5000                 01:23:20

Note: the seconds value is of type long
Run Code Online (Sandbox Code Playgroud)



我知道通常只会进行以下转换以获得所需的数字:

long s = 5000;              //total seconds 

long hrs = (s / 3600)       //hours
long mins = ((s%3600)/60)   //minutes
long secs = (s%60)          //seconds
Run Code Online (Sandbox Code Playgroud)



但是,这会在值上留下小数.也许有某种格式可以让我抛出不需要的小数.

我所遇到的选择是String.format(),SimpleDateFormat()或者连接字符串自己.

问题是,我将每秒更新一次这个JLabel,有时甚至可以计算相当于5-6天.

所以我正在寻找一个比我更有经验的人,并且知道解决这个问题的最有效方法.

Chr*_*wne 5

如果我是你,我会使用SimpleDateFormat.

如果SDF对你来说太慢,请分析所有选项并选择最快的选项,然后重构其余代码,直到它足够快.

请记住,过早优化是所有邪恶的根源,并且您分析代码错过目标执行时间之后,您应该只进行任何优化.