<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 输入2个日期(年月日),计算两个时间之间相差的天数
// 思路:
// 1. 获取年月日
let year1 = Number(prompt('输入第一个时间的年份:'))
let month1 = Number(prompt('输入第一个时间的月份:'))
let day1 = Number(prompt('输入第一个时间的日期:'))
let num1 = 0 // 第一个时间的总天数
let num2 = 0 // 第二个时间的总天数
let year2 = Number(prompt('输入第二个时间的年份:'))
let month2 = Number(prompt('输入第二个时间的月份:'))
let day2 = Number(prompt('输入第二个时间的日期:'))
// 比较两个时间的大小,确保是大的时间-小的时间
// 如果year1大于year2,则交换两个时间的位置
// 如果year1等于year2,则比较两个时间的月份,月份大的-月份小的
// 如果year1等于year2,且month1等于month2,则比较两个时间的日期,日期大的-日期小的
if (year1 - year2 > 0 || (year1 - year2 == 0 && month1 - month2 > 0) || (year1 - year2 == 0 && month1 - month2 == 0 && day1 - day2 > 0)) // 第一个时间大于第二个时间
{
let tempYear = year1 // 创建一个tempYear作为交换年份的容器
year1 = year2
year2 = tempYear
let tempMonth = month1 // 创建一个tempMonth作为交换月份的容器
month1 = month2
month2 = tempMonth
let tempDay = day1 // 创建一个tempDay作为交换日期的容器
day1 = day2
day2 = tempDay
}
//
for (let i = 1; i < month1; i++) {
switch (i) {
case 1:
num1 = 31 + num1
break;
case 2:
num1 = 28 + num1
break;
case 3:
num1 = 31 + num1
break;
case 4:
num1 = 30 + num1
break;
case 5:
num1 = 31 + num1
break;
case 6:
num1 = 30 + num1
break;
case 7:
num1 = 31 + num1
break;
case 8:
num1 = 31 + num1
break;
case 9:
num1 = 30 + num1
break;
case 10:
num1 = 31 + num1
break;
case 11:
num1 = 30 + num1
break;
case 12:
num1 = 31 + num1
break;
default:
break;
}
}
num1 = num1 + day1
console.log("num1:" + num1);
for (let j = 1; j < month2; j++) {
switch (j) {
case 1:
num2 = 31 + num2
break;
case 2:
num2 = 28 + num2
break;
case 3:
num2 = 31 + num2
break;
case 4:
num2 = 30 + num2
break;
case 5:
num2 = 31 + num2
break;
case 6:
num2 = 30 + num2
break;
case 7:
num2 = 31 + num2
break;
case 8:
num2 = 31 + num2
break;
case 9:
num2 = 30 + num2
break;
case 10:
num2 = 31 + num2
break;
case 11:
num2 = 30 + num2
break;
case 12:
num2 = 31 + num2
break;
default:
break;
}
}
num2 = num2 + day2
console.log("num2:" + num2);
let totalDays = 0
for (let i = year1; i <= year2; i++) {
if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0) && year1 == year2 && month2 > 2 && month1 < 3) { // 两个时间在同一年(闰年),并且包含2月
totalDays = num2 - num1 + 1
console.log("totalDays:" + totalDays)
} else if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0) && year1 == year2 && month2 > 2 && month1 > 2) { // 两个时间在同一年(闰年),并且不包含2月
totalDays = num2 - num1
console.log("totalDays:" + totalDays)
} else if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0) && year1 + 1 == year2 && month2 > 2 || month1 < 3) { //相邻两年只要有一个包含2月,则totalDays+1
totalDays = 366 - num1 + num2
console.log("totalDays:" + totalDays)
} else if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0) && year2 - year1 >= 2 && month2 > 2 || month1 < 3) { //相隔两年以上,totalDays+1
totalDays = 366 - num1 + num2 + totalDays
console.log("totalDays:" + totalDays)
} else {
if (year1 + 1 == year2) {
totalDays = 365 - num1 + num2 + totalDays
console.log("totalDays:" + totalDays)
}
else if (i + 1 != year2 && i != year2) {
totalDays = 365 + totalDays
console.log("totalDays:" + totalDays)
}
}
}
</script>
</body>
</html>
输入2个日期(年月日),计算两个时间之间相差的天数
最新推荐文章于 2023-12-16 21:19:35 发布