gpt4 book ai didi

java - Unix 时间戳的时间转换

转载 作者:行者123 更新时间:2023-12-01 14:46:53 25 4
gpt4 key购买 nike

我所属的服务器有一个我正在连接的 xml-rpc API。其中有一个名为“player.seen”的函数,它返回“玩家”最后一次出现的 Unix 时间戳。我试图使用这个数字来显示自从用户出现以来已经过去了多长时间。由于某种原因,它没有给出正确的值:

旧代码:http://pastebin.com/tPe6mkyJ

我尝试过以多种不同的方式重写脚本,但忘记备份它们。我想知道你们中是否有人知道完成此转换的更好方法。

编辑:编辑代码以使用 joda-Time 后,我仍然得到不正确的值。例如,根据游戏中的/seen 命令,玩家“pomi44”已经 15 天 9 小时 10 分钟没有露面。我的程序输出“1天18小时18分10秒”。

新代码:

            Object[] params1 = new Object[]{API_KEY, playerName};
String result = (String) client.execute("player.seen", params1);

int timeStamp = Integer.parseInt(result);

Date curDate = new Date();

DateTime start = new DateTime(timeStamp * 1000L);
DateTime end = new DateTime(curDate.getTime());
Period period = new Period(start, end);

int seconds = period.getSeconds();
int minutes = period.getMinutes();
int hours = period.getHours();
int days = period.getDays();

System.out.println(days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds.");

我尝试了不同的数字来代替“1000”,但都给出了错误的值。例如,根据游戏中的/seen 命令,玩家“pomi44”已经 15 天 9 小时 10 分钟没有出现。我的程序为 pomi44 输出“1 天,18 小时,18 分钟,10 秒”。

提前致谢。

最佳答案

long 转换为 int 并不是一个好主意:

int TimeStamp_now = (int) curDate.getTime();

通过上述声明,您可能会丢失一些信息。

我建议您使用Joda Time Library 。它的概念是periods .

DateTime start = new DateTime(timeStamp * 1000L);
DateTime end = new DateTime(curDate.getTime());
Period period = new Period(start, end);

org.joda.time.Period 有方法 getDaysgetHoursgetMinutes 等来获取这些时差字段。

关于java - Unix 时间戳的时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351601/

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