【问题标题】:Convert seconds to W,D,H,M format in JAVA在 JAVA 中将秒转换为 W、D、H、M 格式
【发布时间】: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:请把它放到问题中......

标签: java seconds time-format


【解决方案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 到秒的转换”方法不正确,检查一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2016-08-29
    • 1970-01-01
    • 2019-01-28
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多