1.思路
闰年366天——被4整除不能被100整除或者能被400整除的年份。
平年365天——除了闰年以后的年份。
首先 去除整年 再去除整月 整日 最后输出此事件为新的一天的何时。
2.代码
import java.util.*;
public class TimeShow {
// 平年365天 闰年366天
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long time = sc.nextLong();
int hh, mm, ss, count, month,count1,day1,day2,day3;
long x;
time = time / 1000; // 将ms->s
// 减去整年
for (int i = 1970;; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
x = 366 * 24 * 60 * 60;
} else {
x = 365 * 24 * 60 * 60;
}
if (time < x) {
count = i;
break;
}
time = time - x;
}
// 再减去整月
for (month = 0;; month++) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
x = 31 * 24 * 60 * 60;
} else if (month == 2){
if (count % 4 == 0 && count % 100 != 0 || count % 400 == 0) {
// 说明闰年多一天
{
x = 29 * 24 * 60 * 60;
}
} else {
x = 28 * 24 * 60 * 60;
}
}else {
x = 30*24*60*60;
}
if(time < x) {
count1 = month;
break;
}
time = time -x;
}
//减去整日
for(int i = 0;;i++) {
day1 = 24*60*60;
if(time<day1) {
break;
}
time = time-day1;
}
//输出小时
for(int i =0;;i++) {
day2 = 60*60;
hh = i;
if(time < day2) {
break;
}
time = time-day2;
}
for(int i = 0;;i++) {
day3=60;
mm = i;
if(time < day3) {
break;
}
time = time -day3;
}
System.out.printf("%02d:%02d:%02d",hh,mm,time);
}
}