HJ73 计算日期到天数转换
题目描述
示例
代码
代码1 计算毫秒差值求解
js
/*
随便输入一个日期,算是一年的第多少天
直接构造一个date,然后使用毫秒减一下
计算出相差的毫秒数,然后把毫秒数转换为天
*/
let readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.on('line', line=>{
let [year, month, day] = line.split(' ')
let date1 = new Date(+year, +month-1, +day)
let date2 = new Date(+year, 0, 1)
let result = ( date1.getTime() - date2.getTime() ) / 1000 / 60 / 60 / 24
console.log(result+1)
})
代码2 判断是否为闰年,自己计算
js
/*
随便输入一个日期,算是一年的第多少天
判断是否为闰年 自己计算
*/
let readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let dateMap = new Map([
[1, 31],
[2, 28],
[3, 31],
[4, 30],
[5, 31],
[6, 30],
[7, 31],
[8, 31],
[9, 30],
[10, 31],
[11, 30],
[12, 31],
])
rl.on('line', line=>{
let [year, month, day] = line.split(' ').map(item=>{
return parseInt(item)
})
if(isLeapYear(year)){ // 如果是闰年
dateMap.set(2, 29) // 天数改为29天
}
// 开始计算
let result = 0
for(let i = 1; i <= month; i++){
if( i=== month){
result += day
}else {
result += dateMap.get(i)
}
}
console.log(result)
})
// 判断是否为闰年
/*
1. 能被4整除,不能被100整除的年
2. 或者 能被400整除的年
*/
function isLeapYear(year){
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0
}