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

Unix系统下date -d yesterday命令返回当前日期 求获取昨日日期方案

Unix系统正确获取昨日日期的方案

你使用的date +%Y%m%d -d "yesterday"是GNU date(Linux默认搭载)的专属语法,Unix默认搭载的是BSD版本date,参数逻辑不兼容,因此无法返回预期结果。可使用以下方案实现需求:

  • 方案1:使用BSD date原生调整参数(无需额外安装软件,推荐)
    执行命令:date -v-1d +%Y%m%d
    说明:-v是BSD date专属的时间调整参数,-1d代表将当前时间往前调整1天,后面跟随你需要的日期格式符即可正常输出昨日日期。

  • 方案2:GNU date兼容写法(适合需要跨Linux/Unix运行的脚本)
    如果你已经在Unix上安装了GNU coreutils包,GNU date会默认被命名为gdate,直接执行Linux兼容语法即可:
    gdate +%Y%m%d -d "yesterday"
    需要写跨平台兼容脚本的话,可以增加判断逻辑,示例如下:

    if command -v gdate >/dev/null 2>&1; then
        # Unix环境已安装GNU date
        yesterday=$(gdate +%Y%m%d -d "yesterday")
    else
        # 兼容Linux原生环境或未装GNU date的Unix环境
        yesterday=$(date +%Y%m%d -d "yesterday" 2>/dev/null || date -v-1d +%Y%m%d)
    fi
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:06:04