2013-01-24 92 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); 
相关问题