gpt4 book ai didi

java - 长时间转换为错误的时间

转载 作者:行者123 更新时间:2023-12-04 15:40:45 24 4
gpt4 key购买 nike

我正在尝试格式化一个长到天,小时,分钟,秒的格式,并在网上找到了一个方法。

public static String getTime(long time) {
long enlapsed = System.currentTimeMillis() - time;
long days = TimeUnit.MILLISECONDS.toDays(enlapsed);
enlapsed -= TimeUnit.DAYS.toMillis(days);

long hours = TimeUnit.MILLISECONDS.toHours(enlapsed);
enlapsed -= TimeUnit.HOURS.toMillis(hours);

long minutes = TimeUnit.MILLISECONDS.toMinutes(enlapsed);
enlapsed -= TimeUnit.MINUTES.toMillis(minutes);

long seconds = TimeUnit.MILLISECONDS.toSeconds(enlapsed);

String result = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
return result.replace("0d ", "").replace("0h ", "").replace("0m ", "").replace("0s ", "");
}

它正在工作,但现在突然输入 4380 给出 18151d 15h 33m 34s。我做错了什么?

最佳答案

您在网上找到的方法计算从现在到给定时间戳已经过去了多少时间。您可以测试此方法是否适用于像 this 这样的网站,并将时间戳乘以 1000 以将其转换为毫秒,并将该 long 传递给 getTime

时间戳 4380 表示 Java 纪元之后 4380 毫秒,大约是 1970 年 1 月 1 日,也就是大约 18000 天前。

如果你想要一个更新的例子,时间戳 1568312340000 就在我开始写这篇文章和做 System.out.println(getTime(1568312340000L)); 给出更短的持续时间。

您似乎想要的不是计算从现在到某个时间戳的耗时。您似乎只想将毫秒数转换为以天、小时、分钟和秒表示的持续时间。

该方法的工作原理是首先计算现在和给定时间戳之间的毫秒差值,将差值放入名为 enlapsed 的变量中(拼写错误!)然后计算多少天、几小时、多少分钟秒进入 enlapsed 毫秒。你想要的是这个方法所做的一切,除了计算差异的第一部分,所以你应该删除这一行:

long enlapsed = System.currentTimeMillis() - time;

并将其替换为:

long enlapsed = time;

因为您只是希望它直接计算time 参数代表的持续时间。

关于java - 长时间转换为错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57912415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com