JavaScript如何操作日期时间_JavaScript中Date对象有哪些方法

JavaScript 中操作日期时间主要依靠 Date 对象,支持创建、获取、设置、计算、比较和格式化。创建方式包括 new Date()、解析字符串、传入数值参数或时间戳;获取/设置字段需注意月份和星期从 0 开始;相减得毫秒差,比较自动转时间戳;格式化推荐手动拼接以确保可控性。

JavaScript 中操作日期时间主要靠 Date 对象,它既能表示当前时间,也能解析、计算和格式化任意时间点。掌握常用方法就能应对大部分场景,不需要第三方库。

创建和获取时间

新建 Date 实例有多种方式:

  • new Date():获取当前系统时间
  • new Date('2025-05-20')new Date('May 20, 2025 14:30'):解析字符串(注意兼容性,推荐 ISO 格式)
  • new Date(2025, 4, 20, 14, 30):传入年、月(从 0 开始!)、日、时、分等数值(最可靠)
  • new Date(1716215400000):传入毫秒时间戳(自 1970-01-01 UTC 起)

获取时间字段用 get 系列方法,比如:getDate()(当月几号)、getMonth()(0–11)、getFullYear()getHours()getMinutes() 等。注意月份和星期几(getDay() 返回 0 表示周日)都是从 0 开始的。

设置时间值

对应地,用 set 系列方法修改日期对象:

  • setDate(25):设为当月 25 号
  • setMonth(5):设为 6 月(注意是 0 起始)
  • setFullYear(2025, 0, 1):设为 2025 年 1 月 1 日(可一次设多个)
  • setHours(10, 30, 0, 0):设为上午 10:30:00.000

所有 set 方法都会**直接修改原 Date 对象**,返回的是时间戳(毫秒数),不是新对象。

时间计算与比较

Date 对象可以直接用 - 运算符相减,结果是毫秒差:

  • const diffMs = date2 - date1
  • 换算成天:Math.floor(diffMs / (1000 * 60 * 60 * 24))

比较大小可用 >,因为 Date 在数值上下文中会自动调用 valueOf() 返回时间戳。

想加减天数?先转毫秒,再加减后重新构造:

  • new Date(date.getTime() + 7 * 24 * 60 * 60 * 1000) → 加 7 天

格式化输出

内置格式化方法简单但可控性低:

  • toString():本地时区全格式(如 "Mon May 20 2025 14:30:00 GMT+0800")
  • toISOString():标准 ISO 8601 字符串(UTC 时间,如 "2025-05-20T06:30:00.000Z")
  • toLocaleString():按浏览器语言和地区格式化(可传 locale 和 options)

自定义格式推荐手动拼接,例如:
`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`