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

JS如何对date输入框的YYYY-MM-DD日期减1天且无需处理时区问题

JS实现date输入框值减1天(无时区问题)

因为输入是固定YYYY-MM-DD格式的字符串,且不需要处理时区,最佳实现无需引入第三方依赖,全程避开UTC相关逻辑即可,完整实现如下:

// 原有获取输入框值的逻辑
var date_to_selector = $(this).parent().find("input[name=date_to]");
var date_to = date_to_selector.val();

// 拆分原始日期字符串为数字
const [year, month, day] = date_to.split('-').map(Number);
// 构造本地日期对象,注意JS月份从0开始计数,需要减1
const targetDate = new Date(year, month - 1, day);
// 执行减1天操作,内置逻辑自动处理跨月、跨年、闰年场景
targetDate.setDate(targetDate.getDate() - 1);

// 拼接为YYYY-MM-DD格式,自动补前导零
const date_to_minus_1 = [
  targetDate.getFullYear(),
  String(targetDate.getMonth() + 1).padStart(2, '0'),
  String(targetDate.getDate()).padStart(2, '0')
].join('-');

方案说明

  • 没有直接用new Date(date_to)解析字符串,避免把输入的YYYY-MM-DD当成UTC时间解析的时区差问题
  • 全程使用getFullYear/getMonth/getDate等本地时间方法,没有调用toISOString等UTC相关接口,不会触发时区转换
  • 所有计算都基于本地日期维度,完全匹配无需处理时区的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:11