JavaScript--日期对象

一、创建日期对象

使用 new Date() 构造函数创建,支持多种初始化方式:

// 1. 获取当前日期时间
let now = new Date();

// 2. 传入时间戳(毫秒数,从1970-01-01 00:00:00 UTC开始)
let date1 = new Date(1620000000000);

// 3. 传入日期字符串(推荐ISO格式)
let date2 = new Date("2023-10-01");
let date3 = new Date("2023-10-01T12:30:00");

// 4. 传入年、月(0-11)、日、时、分、秒
let date4 = new Date(2023, 9, 1, 12, 30, 0); // 2023-10-01 12:30:00

注意:月份参数是 0 基索引(0=1月,11=12月)

二、获取日期时间信息

方法说明返回范围
getFullYear()获取年份(4位数)如:2023
getMonth()获取月份0-11(需+1才是实际月份)
getDate()获取日1-31
getDay()获取星期0-6(0=周日,6=周六)
getHours()获取小时0-23
getMinutes()获取分钟0-59
getSeconds()获取秒0-59
getMilliseconds()获取毫秒0-999
getTime()获取时间戳(毫秒数)如:1696103400000

示例

let date = new Date(2023, 9, 1, 14, 30);
console.log(date.getFullYear()); // 2023
console.log(date.getMonth() + 1); // 10(月份+1)
console.log(date.getDate()); // 1
console.log(date.getDay()); // 0(周日)

三、设置日期时间信息

方法说明
setFullYear(year)设置年份
setMonth(month)设置月份(0-11)
setDate(day)设置日(1-31)
setHours(hour)设置小时(0-23)
setMinutes(minute)设置分钟(0-59)
setSeconds(second)设置秒(0-59)
setTime(timestamp)通过时间戳设置日期

示例

let date = new Date();
date.setFullYear(2024);       // 设置年份为2024
date.setMonth(11);            // 设置月份为12月
date.setDate(25);             // 设置日为25号
console.log(date); // 2024-12-25 ...

四、日期格式化

JavaScript 没有内置格式化函数,需手动拼接:

function formatDate(date) {
  let year = date.getFullYear();
  let month = date.getMonth() + 1; // 月份补正
  let day = date.getDate();
  let hours = date.getHours();
  let minutes = date.getMinutes();
  let seconds = date.getSeconds();

  // 补0处理(确保两位数)
  month = month < 10 ? '0' + month : month;
  day = day < 10 ? '0' + day : day;
  hours = hours < 10 ? '0' + hours : hours;
  minutes = minutes < 10 ? '0' + minutes : minutes;
  seconds = seconds < 10 ? '0' + seconds : seconds;

  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

// 使用
let now = new Date();
console.log(formatDate(now)); // 2023-10-01 14:30:45

五、日期计算

通过时间戳(毫秒数)进行日期加减计算:

// 1天 = 24*60*60*1000 = 86400000毫秒
let oneDay = 86400000;

let today = new Date();

// 计算明天
let tomorrow = new Date(today.getTime() + oneDay);

// 计算30天后
let nextMonth = new Date(today.getTime() + 30 * oneDay);

// 计算两个日期的差值(天)
let start = new Date("2023-10-01");
let end = new Date("2023-10-10");
let diffTime = end.getTime() - start.getTime();
let diffDays = Math.ceil(diffTime / oneDay); // 9天

六、应用场景

1. 实时时钟

function updateClock() {
  let now = new Date();
  document.getElementById('clock').textContent = formatDate(now);
}
// 每秒更新
setInterval(updateClock, 1000);
updateClock(); // 初始执行

2. 倒计时功能

let target = new Date(2024, 0, 1); // 目标日期

function updateCountdown() {
  let now = new Date();
  let diff = target - now; // 毫秒差
  
  let days = Math.floor(diff / 86400000);
  let hours = Math.floor((diff % 86400000) / 3600000);
  let minutes = Math.floor((diff % 3600000) / 60000);
  let seconds = Math.floor((diff % 60000) / 1000);
  
  console.log(`${days}${hours}${minutes}${seconds}`);
}
setInterval(updateCountdown, 1000);

七、注意

  1. 月份问题getMonth() 返回 0-11,必须 +1 才能得到实际月份。
  2. 时区问题:不同时区的日期解析可能有差异,使用时间戳或 ISO 格式字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值