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

ISO8601格式时间戳减法:如何获取指定时间的前一天同格式时间戳

ISO8601时间戳减1天的实现方案

核心逻辑非常简单:先将ISO8601字符串解析为带时区感知的时间对象,执行减1天运算后再格式化回ISO8601格式即可,以下是不同常用场景的实现方法:

Python 实现

无需第三方依赖,用标准库datetime即可完成:

from datetime import datetime, timedelta

# 解析ISO8601时间戳,兼容所有Python3版本
origin_time = datetime.fromisoformat("2021-01-03T01:59:00Z".replace("Z", "+00:00"))
# 执行减1天运算
target_time = origin_time - timedelta(days=1)
# 转换为带Z后缀的ISO8601格式
print(target_time.isoformat().replace("+00:00", "Z"))

运行输出结果为2021-01-02T01:59:00Z,完全符合要求。

JavaScript 实现

浏览器、Node.js环境都可以用原生Date对象直接处理:

const originTime = new Date("2021-01-03T01:59:00Z");
// 减1天,自动适配跨月、跨年场景
originTime.setDate(originTime.getDate() - 1);
// 输出ISO8601格式
console.log(originTime.toISOString());

运行输出结果为2021-01-02T01:59:00.000Z,不需要毫秒的话截取前19位再加Z即可。

Shell 命令实现(Linux/macOS)

直接用系统自带的date命令就能处理:

# GNU date(绝大多数Linux发行版默认)
date -d "2021-01-03T01:59:00Z -1 day" -u +"%Y-%m-%dT%H:%M:%SZ"

# BSD date(macOS默认)
date -j -u -v-1d -f "%Y-%m-%dT%H:%M:%SZ" "2021-01-03T01:59:00Z" +"%Y-%m-%dT%H:%M:%SZ"

两个命令输出结果均为2021-01-02T01:59:00Z。


注意:如果业务场景涉及夏令时区域,减1天如果是指固定减去24小时,只需要把上述代码中减1天的参数调整为减24小时即可,比如Python中将timedelta(days=1)改为timedelta(hours=24)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:10