在 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 格式的主要内容,如果未能解决你的问题,请参考以下文章

mysql中怎么把日期的格式转换为YYYYMMDD的数字形式,谢谢

C语言秒数转换成标准时间,求解答!

c++字符串转换为枚举类型

Python将秒转换为 时分秒 的格式

在 PHP 中将一种日期格式转换为另一种日期格式

在 python django 中将秒转换为分钟