JavaScript计算当前时间到指定日期(如2020年1月1日)的精确时间差,包括年、月、周、天、小时、分钟和秒数。代码如下:
document.addEventListener('DOMContentLoaded', function() {
const targetDateInput = document.getElementById('target-date');
const calculateBtn = document.getElementById('calculate-btn');
const currentTimeDisplay = document.getElementById('current-time-display');
const yearsEl = document.getElementById('years');
const monthsEl = document.getElementById('months');
const weeksEl = document.getElementById('weeks');
const daysEl = document.getElementById('days');
const hoursEl = document.getElementById('hours');
const minutesEl = document.getElementById('minutes');
const secondsEl = document.getElementById('seconds');
let updateInterval;
// 更新当前时间显示
function updateCurrentTime() {
const now = new Date();
currentTimeDisplay.textContent = now.toLocaleString();
}
// 计算时间差
function calculateTimeDifference() {
const targetDate = new Date(targetDateInput.value);
const now = new Date();
// 计算总毫秒差
let diffMs = Math.abs(now - targetDate);
// 计算秒数
const seconds = Math.floor(diffMs / 1000);
// 计算分钟数
const minutes = Math.floor(seconds / 60);
// 计算小时数
const hours = Math.floor(minutes / 60);
// 计算天数
const days = Math.floor(hours / 24);
// 计算周数
const weeks = Math.floor(days / 7);
// 计算月数(近似值)
const months = Math.floor(days / 30.44);
// 计算年数(近似值)
const years = Math.floor(days / 365.25);
// 更新显示
yearsEl.textContent = years;
monthsEl.textContent = months;
weeksEl.textContent = weeks;
daysEl.textContent = days;
hoursEl.textContent = hours % 24;
minutesEl.textContent = minutes % 60;
secondsEl.textContent = seconds % 60;
}
// 初始计算
calculateTimeDifference();
updateCurrentTime();
// 设置定时器,每秒更新一次
updateInterval = setInterval(() => {
calculateTimeDifference();
updateCurrentTime();
}, 1000);
// 按钮点击事件
calculateBtn.addEventListener('click', calculateTimeDifference);
// 日期变化时重新计算
targetDateInput.addEventListener('change', calculateTimeDifference);
});页面的html代码:
<div class="container"> <h1>⏰ 时间差计算器</h1> <div class="date-selector"> <label for="target-date">选择目标日期:</label> <input type="date" id="target-date" value="2020-01-01"> <button id="calculate-btn">计算时间差</button> </div> <div class="current-time"> 当前时间:<span id="current-time-display"></span> </div> <div class="time-difference"> <div class="time-unit"> <div class="value" id="years">0</div> <div class="label">年数</div> </div> <div class="time-unit"> <div class="value" id="months">0</div> <div class="label">月数</div> </div> <div class="time-unit"> <div class="value" id="weeks">0</div> <div class="label">周数</div> </div> <div class="time-unit"> <div class="value" id="days">0</div> <div class="label">天数</div> </div> <div class="time-unit"> <div class="value" id="hours">0</div> <div class="label">小时数</div> </div> <div class="time-unit"> <div class="value" id="minutes">0</div> <div class="label">分钟数</div> </div> <div class="time-unit"> <div class="value" id="seconds">0</div> <div class="label">秒数</div> </div> </div> </div>