JavaScript: JavaScript 日期

最后更新:2026-10-13

JavaScript 用 Date 对象处理日期和时间。它就像一块电子手表——能看当前时间,也能设定任意时刻,还能计算时间差。

相关日期方法:getFullYear() toISOString getMonth() getHours() Date.now() getDate() getDay() Date set

1. Date对象的创建与操作

四种常见创建方式:

HTML
<script>
console.log(new Date());                      // 当前时间
console.log(new Date("2025-06-19"));          // 日期字符串
console.log(new Date(2025, 5, 19, 10, 30, 0)); // 年、月、日、时、分、秒
console.log(new Date(1718764800000));         // 时间戳(毫秒)
</script>

大坑预警:月份从 0 开始!0 = 一月,11 = 十二月。new Date(2025, 5, 19) 里的 5 是六月,不是五月。这是 Date 对象被吐槽最多的设计,没有之一。

(2) 获取日期时间

方法 返回 注意
getFullYear() 4位年份 别用 getYear(),已废弃
getMonth() 0-11 要 +1 才是实际月份
getDate() 1-31 当月第几天
getDay() 0-6 0=周日,不是周一!
getHours() 0-23 —
getMinutes() 0-59 —
getSeconds() 0-59 —

getDay() 返回的是星期几,不是当月第几天——要获取第几天用的是 getDate()。新手经常搞混。

(3) 设置日期时间

对应一组 set 方法:setFullYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()。设置时会自动进位:

HTML
<script>
const d = new Date(2025, 5, 19);
d.setDate(32); // 自动变成 7月2日
console.log(d.toLocaleDateString());
</script>

(4) 日期格式化

方法 示例输出
toLocaleDateString() "2025/6/19"
toLocaleTimeString() "10:30:00"
toLocaleString() "2025/6/19 10:30:00"

这些方法会根据浏览器的语言环境自动格式化,中文浏览器显示中文格式。

(5) 时间戳和计算时间差

时间戳是自 1970年1月1日 00:00:00 UTC 起经过的毫秒数。

HTML
<script>
console.log(Date.now());           // 获取当前时间戳
console.log(new Date().getTime()); // 同上
</script>

计算时间差的核心思路:两个时间戳相减,得到毫秒差,再换算:

HTML
<script>
const start = Date.now();
for (let i = 0; i < 1000000; i++) {} // 模拟操作
const end = Date.now();
const diff = end - start;        // 毫秒
const diffSeconds = diff / 1000; // 秒
console.log("耗时:" + diff + "ms(" + diffSeconds + "秒)");
</script>

▶ 示例:显示当前日期时间

▶ 试一试

▶ 示例:日期信息详解

▶ 试一试

▶ 示例:倒计时计算

▶ 试一试

▶ 示例:时间差计算

▶ 试一试

相关日期方法:getFullYear() toISOString getMonth() getHours() Date.now() getDate() getDay() Date set

❓ 常见问题

Q 为什么 getMonth() 返回的月份要 +1?
A 因为 Java 的 Date 类就是这么设计的,JavaScript 继承了这个"传统"。虽然所有人都觉得这设计很蠢,但改不了了——太多现有代码依赖这个行为。记住就好。
Q new Date("2025-06-19") 和 new Date(2025, 5, 19) 有区别吗?
A 有。字符串解析的日期默认是 UTC 时间 0 点,而参数形式是本地时间。显示时可能差 8 小时(东八区)。如果只需要日期不关心时间,用参数形式更安全。
Q 如何计算"某人多少岁了"?
A 用当前年份减出生年份,然后检查今年生日是否已过:如果当前月份 < 出生月份,或者月份相同但日期 < 出生日期,年龄再减 1。

📖 小节

📝 作业

  1. 编写一个函数 formatDate(date),返回 "YYYY年MM月DD日 星期X" 格式的字符串。注意月份和日期要补零。
  2. 编写一个函数 getAge(birthday),传入出生日期字符串(如 "2000-03-15"),返回当前实足年龄。
  3. 编写一个"已过去多久"功能:输入一个过去的日期,显示"距今 X 年 X 月 X 天"或"X 天前"或"X 小时前"(根据时间远近自动选择格式)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏