You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何从字符串格式日期中减去指定天数并返回YYYY-MM-DD格式字符串?

解决日期字符串减天后的格式化问题

你的问题出在最后一步用了toString()方法——它本来就是用来返回带时区、星期的完整可读日期字符串的,自然不符合你要的YYYY-MM-DD格式。下面给你两种靠谱的解决方案:

方法1:利用toISOString()截取核心部分

toISOString()会返回标准的ISO格式日期字符串(比如"2021-07-18T00:00:00.000Z"),我们只需要截取前10位就能得到目标格式:

const dateString = "2021-07-19"
const previousDayDate = new Date(dateString)
previousDayDate.setDate(previousDayDate.getDate() - 1)
const previousDayDateString = previousDayDate.toISOString().slice(0, 10)
// 输出:"2021-07-18"

注意:这个方法是基于UTC时区处理的,如果你的本地时区和UTC差异较大(比如UTC-8),可能需要确认是否符合你的业务逻辑——不过大多数场景下,这种方式已经足够好用。

方法2:手动拼接日期(基于本地时间)

如果你需要严格基于本地时间来生成日期字符串,可以手动提取年、月、日信息,然后拼接成目标格式:

const dateString = "2021-07-19"
const previousDayDate = new Date(dateString)
previousDayDate.setDate(previousDayDate.getDate() - 1)

// 提取各部分信息,注意月份是0开始的,要加1,还要补零确保两位
const year = previousDayDate.getFullYear()
const month = String(previousDayDate.getMonth() + 1).padStart(2, '0')
const day = String(previousDayDate.getDate()).padStart(2, '0')

const previousDayDateString = `${year}-${month}-${day}`
// 输出:"2021-07-18"

这种方法完全基于本地时间计算,不会受UTC时区的影响,适合对时区敏感的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:13:09