JavaScript 的 Date 对象用于日期时间操作,但需注意月份从0开始、时区易错、字符串解析不统一等坑;推荐用 ISO 字符串初始化、getUTCxxx 处理时区、toLocaleString 或 Intl 格式化,复杂场景用 dayjs 等库。

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










