在 JAVA 中将秒转换为 W、D、H、M 格式
Posted
技术标签:
【中文标题】在 JAVA 中将秒转换为 W、D、H、M 格式【英文标题】:Convert seconds to W,D,H,M format in JAVA 【发布时间】:2013-01-24 09:28:13 【问题描述】:我有几秒钟的时间,我想将其转换为 6w 3d 9h 5m 之类的格式。有人可以提供一种可以完成此任务的方法。谢谢 :) w=周 d=天 h=小时 m=分钟
我已经尝试了下面的代码,但我没有使用数周
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);
【问题讨论】:
在这种情况下我没有得到几周的时间。还发现我无法使用 TimeUnit 获得数周 @Mizan:请把它放到问题中...... 【参考方案1】:这会给你:
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);
【讨论】:
【参考方案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
【讨论】:
我试过这个..它没有给出正确的结果,周总是 1。谢谢:) 刚试过,604801 表示你有 1 周,而 1209602 表示你有 2 周,它正在工作 试过 98765410 我得到 163w 2d 27386h 50m 。你能帮忙吗?谢谢 现在它对我有用,我只是忘了从小时数中减去天数。 我觉得你的“从 w d h m 到秒的转换”方法不正确,检查一下以上是关于在 JAVA 中将秒转换为 W、D、H、M 格式的主要内容,如果未能解决你的问题,请参考以下文章