我想要我的JLabel顯示值的格式爲HH:mm:ss
而不使用任何外部庫。 (該標籤將每秒更新一次)將長轉換爲HH:mm:ss並將其顯示在標籤中的最有效方法是什麼?
因此,例如,以秒爲以下輸入和期望的輸出低於:
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
我知道,一般人會只是做以下轉換以獲得所需的數字:
long s = 5000; //total seconds
long hrs = (s/3600) //hours
long mins = ((s%3600)/60) //minutes
long secs = (s%60) //seconds
然而,這留下小數的值。也許有某種格式可以讓我折騰不需要的小數。
我碰到的選項有String.format()
,SimpleDateFormat()
,或者自己串聯一個字符串。
事情是,我會每隔一秒更新一次這個JLabel,有時它可以算作5-6天,如果不再更長。
因此,我正在尋找一個在該領域擁有比我更多經驗的人,並且知道解決此問題的最有效方法。
回覆: 「有時也可以數到5-6天,相當於」:在這種情況下,它會繞回'00:00:00',或者您想要以某種方式顯示天數? – ruakh 2012-03-12 19:58:53
回覆:「然而,這會在值上留下小數」:我不知道你的意思。在Java中,如果's'是'long',那麼's/3600'很長;它執行[整數除法](http://mathworld.wolfram.com/IntegerDivision.html),所以不會產生小數點。 – ruakh 2012-03-12 20:00:34
@ruakh我可能需要在中添加天數類別,但我還沒有遇到它。我只知道我將來會遇到它。現在我只想確保我能夠適當地顯示小時,分鐘和秒鐘。另外就長期而言,我在Groovy而不是Java中簡單地測試過它,也許它轉換了類型,但我不知道它是爲什麼顯示小數。 (我沒有意識到,直到你指出) – StartingGroovy 2012-03-12 20:27:52