You need to enable JavaScript to run this app. JS如何从'2020-10-20'类日期字符串中分别提取年、月、日数值?
优惠活动
大模型
产品
解决方案
定价
更多

JS如何从'2020-10-20'类日期字符串中分别提取年、月、日数值?

正则填写方案

你给出的写法里只要补充带捕获组的正则,同时注意match返回的数组第一个元素是完整匹配结果,解构时跳过第一个位置即可:

const [, year, month, day] = '2020-10-20'.match(/^(\d{4})-(\d{2})-(\d{2})$/)

正则各部分说明:

  • ^、$分别匹配字符串开头和结尾,避免脏数据混入
  • 每一对括号为一个捕获组,按顺序对应年、月、日的匹配结果
  • \d{n}表示匹配n位数字,比重复写\d更简洁
更优实现方案

分场景给你几个更简单的选择:

  • 固定短横线分隔格式、不需要做格式校验时,直接用split拆分,性能更高写法更简单:
// 得到字符串类型的年月日
const [year, month, day] = '2020-10-20'.split('-')
// 如果需要数值类型,直接做批量转换即可
const [yearNum, monthNum, dayNum] = '2020-10-20'.split('-').map(Number)
  • 需要同时校验日期合法性时,用Date对象内置方法更稳妥:
const date = new Date('2020-10-20')
const year = date.getFullYear()
// getMonth返回值范围是0~11,需要加1,不足两位补前导0
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')

这种写法会自动处理非法日期输入,比如输入2020-13-01会自动识别为2021年1月,不需要自己额外写校验逻辑。

内容的提问来源于stack exchange,提问作者ADV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:18:04