JavaScript 日期方法
JavaScript Date 方法
Section titled “JavaScript Date 方法”JavaScript 的内置 Date 对象提供了用于处理日期和时间的方法。这些方法允许您检索(获取)和修改(设置)日期的各个组成部分,例如年、月、日、时、分、秒和毫秒。
Date 获取方法
Section titled “Date 获取方法”获取方法用于检索日期的各个部分。以下是一些最常用的方法:
| Method | Description |
|---|---|
getDate() | 获取月份中的日期(1-31 的数字) |
getDay() | 获取星期几(0-6 的数字,其中 0 表示星期日,6 表示星期六) |
getFullYear() | 获取年份(四位数字,yyyy) |
getHours() | 获取小时(0-23) |
getMilliseconds() | 获取毫秒(0-999) |
getMinutes() | 获取分钟(0-59) |
getMonth() | 获取月份(0-11 的数字,其中 0 表示一月,11 表示十二月) |
getSeconds() | 获取秒(0-59) |
getTime() | 获取自 1970 年 1 月 1 日 UTC(Unix Epoch)以来经过的毫秒数 |
getTime() 方法
Section titled “getTime() 方法”getTime() 返回自协调世界时(UTC)1970 年 1 月 1 日午夜以来经过的毫秒数。这个值通常被称为时间戳(timestamp)。
const d = new Date();const timeInMs = d.getTime();console.log(timeInMs); // 示例:1678886400000(会因时间而异)这个方法对于比较日期或计算时间差非常有用。
getFullYear() 方法
Section titled “getFullYear() 方法”getFullYear() 返回日期的年份,以四位数字表示:
const d = new Date(); // 默认为当前日期和时间const year = d.getFullYear();console.log(year); // 示例:2023(如果当前年份是 2023)getDay() 方法
Section titled “getDay() 方法”getDay() 返回星期几,以数字表示(0-6):
const d = new Date(); // 示例:如果今天是星期三const dayOfWeek = d.getDay();console.log(dayOfWeek); // 输出将是 3(因为星期日=0,星期一=1,...)重要提示:在 JavaScript 中,getDay() 返回 0 表示星期日,1 表示星期一,依此类推,直到 6 表示星期六。这可能与某些地区将星期一视为一周第一天的惯例不同。
您可以将一个名称数组与 getDay() 一起使用,以返回星期几的名称:
const d = new Date();const dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];const currentDayName = dayNames[d.getDay()];console.log(`Today is ${currentDayName}.`); // 示例:“今天是星期三。”Date 设置方法
Section titled “Date 设置方法”设置方法用于修改日期的各个部分。以下是一些常用的方法:
| Method | Description |
|---|---|
setDate() | 设置月份中的日期(1-31) |
setFullYear() | 设置年份(可选地,也可设置月份和日期) |
setHours() | 设置小时(0-23) |
setMilliseconds() | 设置毫秒(0-999) |
setMinutes() | 设置分钟(0-59) |
setMonth() | 设置月份(0-11,其中 0 是一月) |
setSeconds() | 设置秒(0-59) |
setTime() | 使用自 Epoch(1970 年 1 月 1 日 UTC)以来经过的毫秒数设置日期和时间 |
setFullYear() 方法
Section titled “setFullYear() 方法”setFullYear() 修改 Date 对象的年份。您也可以可选地设置月份和日期。请记住,月份是基于 0 的索引(一月是 0)。
const d = new Date(); // 创建一个包含当前日期和时间的 Date 对象d.setFullYear(2025, 0, 14); // 设置年份为 2025,月份为一月 (0),日期为 14console.log(d.toDateString()); // 示例:“Tue Jan 14 2025”setDate() 方法
Section titled “setDate() 方法”setDate() 设置月份中的日期(1-31):
const d = new Date(); // 示例:当前日期是 2024 年 3 月 15 日d.setDate(20);console.log(d.toDateString()); // 输出:“Wed Mar 20 2024”(如果当前月份/年份允许 20 日)setDate() 方法也可以用于从日期中添加或减去天数:
const d = new Date(); // 当前日期console.log(`Original date: ${d.toDateString()}`);d.setDate(d.getDate() + 50); // 向当前日期添加 50 天console.log(`Date after 50 days: ${d.toDateString()}`);注意:如果设置日期(或添加/减去天数)导致值超出当前月份的有效范围(例如,为四月设置 32 日),则 Date 对象会自动相应地调整月份和年份。
日期输入 - 解析日期
Section titled “日期输入 - 解析日期”JavaScript 可以解析日期字符串来创建 Date 对象。Date.parse() 静态方法尝试解析日期的字符串表示,并返回自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,如果解析失败则返回 NaN。
const dateString = "March 21, 2012";const milliseconds = Date.parse(dateString);console.log(milliseconds); // 示例:1332288000000(如果未明确指定时区,值可能取决于时区解释)Date.parse() 方法有其局限性,并且其对各种字符串格式的处理在不同浏览器中可能不一致。通常建议在使用 Date.parse() 或带有单个字符串参数的 Date 构造函数时,传入 ISO 8601 格式的日期字符串(例如,YYYY-MM-DDTHH:mm:ss.sssZ),以确保可靠的解析。
或者,您通常可以直接将日期字符串传递给 Date 构造函数:
const isoDateString = "2024-03-15T10:00:00Z"; // ISO 8601 格式 (UTC)const dateFromISO = new Date(isoDateString);console.log(dateFromISO.toUTCString());
// 使用特定组件构造(月份是基于 0 的索引!)const specificDate = new Date(2024, 2, 15, 12, 30, 0); // 2024 年 3 月 15 日,12:30:00 本地时间console.log(specificDate.toLocaleString());然后您可以使用毫秒数(来自 Date.parse() 或 getTime())来创建一个新的日期对象:
const millisecondsSinceEpoch = 1332288000000; // 来自 Date.parse() 或其他来源const dateObject = new Date(millisecondsSinceEpoch);console.log(dateObject.toUTCString()); // 示例:“Wed, 21 Mar 2012 00:00:00 GMT”可以使用比较运算符(<, >, <=, >=)直接比较 Date 对象。但是,这比较的是它们的毫秒表示。为了清晰起见,通常最好显式比较来自 getTime() 的值。
以下示例将今天的日期与 2100 年 1 月 14 日进行比较:
const today = new Date();const someday = new Date();someday.setFullYear(2100, 0, 14); // 2100 年 1 月 14 日(月份 0 是一月)
let comparisonResult;if (someday.getTime() > today.getTime()) { comparisonResult = "Today is before January 14, 2100.";} else if (someday.getTime() < today.getTime()) { comparisonResult = "Today is after January 14, 2100.";} else { comparisonResult = "Today is January 14, 2100.";}console.log(comparisonResult);提醒:在处理 JavaScript Date 对象中的月份时(例如,在 Date 构造函数或使用 setMonth()/getMonth() 时),一月表示为 0,十二月表示为 11。这是常见的“差一”错误来源。
完整的 JavaScript Date 参考
Section titled “完整的 JavaScript Date 参考”有关所有 Date 对象属性和方法的全面且最新的参考,请查阅 MDN Web 文档中的 JavaScript Date。 (示例:搜索 ‘MDN Date JavaScript’)。
这个资源提供了所有与 Date 相关功能的详细描述、语法和示例。