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

如何对字符串格式的日期做减天数计算后输出为字符串格式

你的思路是对的,该需求核心实现分为三步:1. 把MM-DD-YYYY格式的字符串解析为日期类型对象;2. 对日期对象执行减3天的运算;3. 将运算后的日期对象格式化为MM-DD-YYYY格式的字符串。以下是不同常用编程语言的实现方案:

不同编程语言实现方案

Python

用标准库datetime即可完成,不需要额外安装第三方依赖:

  • 字符串转日期对象使用datetime.strptime()函数,指定匹配格式为%m-%d-%Y
  • 日期减法使用datetime.timedelta(days=3)指定偏移量
  • 日期对象转回字符串使用strftime()方法,指定输出格式为%m-%d-%Y

代码示例:

from datetime import datetime, timedelta

date_str = "12-31-2020"
# 转日期对象
date_obj = datetime.strptime(date_str, "%m-%d-%Y")
# 减3天
new_date_obj = date_obj - timedelta(days=3)
# 转目标格式字符串
result = new_date_obj.strftime("%m-%d-%Y")
print(result) # 输出 12-28-2020

JavaScript

使用内置Date对象实现,注意JS中月份取值范围为0-11,解析时需要做适配:

const dateStr = "12-31-2020";
// 拆分字符串获取月、日、年
const [month, day, year] = dateStr.split('-').map(Number);
// 转Date对象,月份减1适配JS规则
const dateObj = new Date(year, month - 1, day);
// 减3天:时间戳减去3天对应的毫秒数
dateObj.setTime(dateObj.getTime() - 3 * 24 * 60 * 60 * 1000);
// 补零格式化输出
const result = `${String(dateObj.getMonth() + 1).padStart(2, '0')}-${String(dateObj.getDate()).padStart(2, '0')}-${dateObj.getFullYear()}`;
console.log(result); // 输出 12-28-2020

Java

JDK8及以上版本推荐使用java.time包下的类实现,避免旧日期API的线程安全问题:

  • 字符串转日期对象使用LocalDate.parse(),搭配DateTimeFormatter指定解析格式MM-dd-yyyy
  • 减3天直接调用内置minusDays()方法
  • 格式化输出直接调用日期对象的format()方法即可

代码示例:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateCalc {
    public static void main(String[] args) {
        String dateStr = "12-31-2020";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy");
        LocalDate date = LocalDate.parse(dateStr, formatter);
        LocalDate newDate = date.minusDays(3);
        String result = newDate.format(formatter);
        System.out.println(result); // 输出 12-28-2020
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:08