JavaScript 的 Date 对象用于日期时间操作,但需注意月份从0开始、时区易错、字符串解析不统一等坑;推荐用 ISO 字符串初始化、getUTCxxx 处理时区、toLocaleString 或 Intl 格式化,复杂场景用 dayjs 等库。
JavaScript 处理日期与时间主要靠内置的 Date 对象,它能创建、解析、格式化和计算时间,但要注意它的月份从 0 开始、时区易出错、字符串解析不统一等常见坑。
用 new Date() 创建当前本地时间对象;也可传入时间戳(毫秒数)、ISO 字符串(如 "2025-05-20")或年月日等参数初始化。
new Date() → 当前本地时间new Date(2025, 4, 20) → 2025 年 5 月 20 日(注意:月份是 0–11)new Date("2025-05-20T10:30:00") → 解析 ISO 字符串(推荐,兼容性好)避免直接用 getMonth()、getDate() 等方法返回值做展示——它们不自动补零。需要格式化时手动处理。
date.getFullYear() 返回 4 位年份(如 2025)String(date.getMonth() + 1).padStart(2, '0') 得到带前导零的月份date.toLocaleDateString('zh-CN') 或 Intl.DateTimeFormat
默认所有 Date 方法操作的是本地时区;getUTCxxx() 系列方法操作 UTC 时间。跨时区计算务必明确基准。
date.getTimezoneOffset() 返回本地时区与 UTC 的分钟差(东八区为 -480)date1.getTime() - date2.getTime() 得毫秒差,再换算成天/小时原生 Date 格式化能力有限,简单场景可用 toLocaleString(),复杂需求推荐轻量库如 dayjs 或 date-fns。
new Date().toLocaleString('zh-CN', { hour12: false }) → 中文本地格式"2025/05/20")建议先正则标准化,再交给 Date
"2025-05-20T08:30:00Z"),明确时区基本上就这些。Date 对象不复杂但容易忽略细节,关键是统一时间基准、谨慎解析字符串、按需格式化输出。