Java 如何将以秒为单位的时间转换为完整的时间戳?
我无法将以秒为单位的时间Java 如何将以秒为单位的时间转换为完整的时间戳?,java,time,formula,Java,Time,Formula,我无法将以秒为单位的时间1352364转换为以“周、天、小时、秒、分钟”为单位的时间戳格式。这是到目前为止我的代码 int timeToGrow = 1352364; int secs = timeToGrow % 60; int mins = (timeToGrow / 60) % 60; int hours = (timeToGrow / 60) / 60; int days = ((timeToGrow / 60) / 60) / 24; int w
1352364
转换为以“周、天、小时、秒、分钟”为单位的时间戳格式。这是到目前为止我的代码
int timeToGrow = 1352364;
int secs = timeToGrow % 60;
int mins = (timeToGrow / 60) % 60;
int hours = (timeToGrow / 60) / 60;
int days = ((timeToGrow / 60) / 60) / 24;
int weeks = (((timeToGrow/60)/60)/24)/7;
System.out.println(weeks + " Weeks "+ days + " Days " + hours + " Hours " + mins + " Minutes " + secs + " Seconds.");
代码应该打印出来
2周1天15小时39分24秒
,但是相反,在打印出来2周15天375小时39分24秒。
我想我看到了问题,但我不确定如何解决它。请原谅我的措词不好,但我认为小时部分包括以天和周为单位的时间,而不是以分和秒为单位的时间(再次抱歉,我不知道如何用词)。如何更改公式以正确显示正确的时间戳?多谢各位 这取决于您使用的Java版本
int timeToGrow = 1352364;
int secs = timeToGrow % 60;
int mins = (timeToGrow / 60) % 60;
int hours = ((timeToGrow / 60) / 60) % 24;
int days = (((timeToGrow / 60) / 60) / 24) % 7;
int weeks = (((timeToGrow/60)/60)/24)/7;
System.out.println(weeks + " Weeks "+ days + " Days " + hours + " Hours " + mins + " Minutes " + secs + " Seconds.");
Java 8或更高版本
您可以使用Java类:
它的API提供了获取纳秒数、秒数、小时数、天数等的方法。例如:
System.out.println(duration.toDays() + " days");
要获取余数,可以使用方法.minusDays()
,minusHours()
等等,或者执行以下操作:
final int HOURS_IN_A_DAY = 24;
System.out.println(duration.toHours() % HOURS_IN_A_DAY);
Java 9或更高版本
使用如上所述的类;但对于较新版本的Java,此类具有用于适当余数的方法,您可以按如下方式生成字符串:
System.out.println(
duration.toDaysPart() + " days, " +
duration.toHoursPart() + " hours, " +
duration.toMinutesPart() + " minutes, " +
duration.toSecondsPart() + " seconds."
);
。。。但这是没有星期的。如果您想要周数,请获取天数,将final int days\u IN_A_WEEK=7
,并使用days/days\u IN_A_WEEK
和days%days\u IN_A_WEEK
Java 7或更早版本
如果您使用的是早期版本的Java,请使用(感谢@OleVV的建议),或者-这两个版本都有Duration
类,而Joda有PeriodFormatter
类,如中所述
如果你使用java 5或更早的版本,只有JoDA会工作。
如果这不是一个任务,你应该考虑从java 8的时间API检查这个类。它有一些帮助方法。对于单词用法,这不是时间戳,它听起来更像是持续时间,一个时间量。时间戳是标识事件发生时间的信息。回答得好。对于Java6和Java7,我更喜欢Java.time
的后端口,而不是Joda时间。对于Java 5,Joda Time是正确的选择。感谢您的回答,但是我不确定如何正确使用duration。@JBoonders关于如何使用duration
,我认为答案给出了一个很好的演示。您也可以访问,尤其是。并在网上搜索。最后
System.out.println(
duration.toDaysPart() + " days, " +
duration.toHoursPart() + " hours, " +
duration.toMinutesPart() + " minutes, " +
duration.toSecondsPart() + " seconds."
);