毫秒到几天

2022-08-31 14:25:27

我做了一些研究,但仍然找不到如何得到的日子...这是我得到的:

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
int days = ????? ;

请帮忙,我数学很糟糕,谢谢。


答案 1

对于像这样的简单情况,应使用 TimeUnit。TimeUnit 的使用对所表示的内容更加明确,并且与显式执行所有算术计算相比,也更容易阅读和写入。例如,若要以毫秒为单位计算天数,以下语句将起作用:

    long days = TimeUnit.MILLISECONDS.toDays(milliseconds);

对于更高级的情况,如果需要在处理时间的上下文中表示更细粒度的持续时间,则应使用包罗万象的现代日期/时间 API。对于 JDK8+,现在包含 java.time(这里是教程javadocs)。对于早期版本的Java,joda-time是一个可靠的选择。


答案 2

如果您没有其他大于天的时间间隔:

int days = (int) (milliseconds / (1000*60*60*24));

如果您也有几周的时间:

int days = (int) ((milliseconds / (1000*60*60*24)) % 7);
int weeks = (int) (milliseconds / (1000*60*60*24*7));

如果可能的话,最好避免使用月份和年份,因为它们没有明确定义的固定长度。严格来说,天也没有:夏令时意味着天的长度可能不是24小时。


推荐