在Java中,使用java.util.Date类已知逝去时间求年月日的方法如下:
-
首先,获取当前时间和逝去时间之间的毫秒数差值,可以使用Date类的getTime()方法获得时间戳。
-
将毫秒数转换为秒数,并计算出总共的天数。
-
根据总共的天数计算出年数和月数。由于每个月的天数不同,所以需要先计算出每个月的天数,然后逐个累加直到总天数减为0。
-
最后,计算出剩余的天数即可。
下面是示例代码实现:
import java.util.Date;
public class DateUtil {
public static void main(String[] args) {
Date startDate = new Date(1585382400000L); // 假设逝去时间为2020年3月28日
Date endDate = new Date(); // 获取当前时间
long diff = endDate.getTime() - startDate.getTime(); // 毫秒数差值
long totalDays = diff / 1000 / 60 / 60 / 24; // 总共的天数
int year = 0, month = 0, days = 0;
int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数(非闰年)
year = (int) (totalDays / 365); // 计算年数
totalDays -= year * 365;
// 计算月数和剩余天数
for (int i = 0; i < 12; i++) {
days = daysOfMonth[i];
if (i == 1 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) { // 闰年2月29天
days = 29;
}
if (totalDays < days) {
month = i + 1;
break;
}
totalDays -= days;
}
System.out.println(year + "年" + month + "月" + totalDays + "天");
}
}
该程序输出结果为:0年1月9天,表示逝去时间为2020年3月28日,距离当前时间9天。