2013-01-24 57 views
0

我有時間在幾秒鐘內我想把它轉換成像6w 3d 9h 5m這樣的格式。有人可以提供一種可以完成這項任務的方法嗎?謝謝:) W =周 d =天 h =小時 M =分鐘將秒轉換爲W,D,H,M格式在JAVA中

我曾嘗試下面的代碼,但我不明白周使用

int day = (int)TimeUnit.SECONDS.toDays(seconds);   
long hours = TimeUnit.SECONDS.toHours(seconds) - TimeUnit.SECONDS.toHours(TimeUnit.SECONDS.toDays(seconds)); 
long minute = TimeUnit.SECONDS.toMinutes(seconds) - TimeUnit.SECONDS.toMinutes(TimeUnit.SECONDS.toHours(seconds)); 
System.out.println("Day :"+day+" Hours :"+hours+" Minutes :"+minute); 
+0

我不明白周在這種情況下。還發現我不能得到周使用TimeUnit – Mizan

+1

@Mizan:請把它放到問題... – ppeterka

回答

2
int seconds=98765410; 
int weeks = (int) (TimeUnit.SECONDS.toDays(seconds)/7); 
int days = (int) (TimeUnit.SECONDS.toDays(seconds) - 7 * weeks); 
long hours = TimeUnit.SECONDS.toHours(seconds) - TimeUnit.DAYS.toHours(days) - TimeUnit.DAYS.toHours(7*weeks); 
long minutes = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60); 
System.out.println(weeks+"w "+days+"d "+hours+"h "+minutes+"m"); 

會打印出:

163w 2d 2h 50m 
+0

我試過這..它沒有給出正確的結果,周總是1。謝謝:) – Mizan

+0

剛剛試過,用604801它說你有1周,1209602你有2周,它正在工作 – BackSlash

+0

嘗試98765410我得到163w 2d 27386h 50m。你能幫忙嗎?謝謝 – Mizan

3

這會給你:

1w 4d 10h 20m 

應該有更優雅的方式,但這個工程:

long s = 987654l; 
     final long M=60,H=60*M, D=24*H, W=7*D; 
     long w = s/W; 
     s%=W; 
     long d = s/D; 
     s%=D; 
     long h = s/H; 
     s%=H; 
     long m = s/M; 

     System.out.printf("%dw %dd %dh %dm",w,d,h,m); 
相關問題