跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux Shell 脚本中 date 命令常用用法

Linux Shell 脚本中 date 命令常用用法。涵盖基础格式、时间加减、特定日期转换及上月末获取技巧。提供遍历日期循环示例,强调跨平台兼容性与引号转义注意事项。适合运维与后端开发人员快速查阅。

活在当下发布于 2016/3/17更新于 2026/6/423 浏览
Linux Shell 脚本中 date 命令常用用法

Linux Shell 脚本中 date 命令常用用法

在运维和自动化脚本开发中,处理时间日期是高频需求。GNU coreutils 提供的 date 命令功能强大,支持格式化输出和时间算术运算。下面整理了一些实用场景和注意事项。

基础格式与当前时间

获取当前时间并指定格式是最基本的操作。注意参数顺序,通常先写格式,再写 -d 选项。

date +%Y%m%d

这会输出类似 20231027 的结果。如果需要包含时分秒:

date "+%Y-%m-%d %H:%M:%S"

时间加减运算

date 命令通过 -d 参数配合相对时间描述符进行计算。常见的描述符包括 day, month, year 等。

# 显示明天的日期
date -d "+1 day" +%Y%m%d

# 显示昨天的日期
date -d "-1 day" +%Y%m%d

# 显示上个月的第一天
date -d "last month" +%Y%m

这里有个细节:正数表示未来,负数表示过去。月份和年份的计算可能会遇到月末边界问题,例如从 1 月 31 日加一个月,结果通常是 2 月 28 日或 29 日,具体取决于系统实现。

转换特定日期格式

如果你有一个固定日期字符串,想转换成另一种格式,可以这样写:

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"

输出示例:2009/12/12 00:00.00

获取上月末日期

这是一个经典场景,也是实际业务中常用的逻辑。思路是先找到下个月的第一天,然后减去一天。

# 方法一:利用相对时间
date -d "$(date +%Y%m01) -1 day" +%Y%m%d

或者更稳健的写法,避免变量拼接带来的空格问题:

echo $(date -d "$(date +%Y%m01) -1 day" +%Y%m%d)

注意:%y 是小写两位年份,建议统一使用大写 %Y 四位年份以防跨世纪歧义。

循环遍历日期

在处理批量任务时,经常需要遍历一段时间内的所有日期。以下是一个遍历上个月每一天的示例脚本:

#!/bin/bash
nowdate=$(date +%Y%m01)           # 本月第一天
startdate=$(date -d "$nowdate last month" +%Y%m%d) # 上个月第一天
enddate=$(date -d "$nowdate last day" +%Y%m%d)     # 上个月最后一天

while [ "$startdate" -le "$enddate" ]; do
    echo $startdate
    startdate=$(date -d "$startdate +1 day" +%Y%m%d)
done

这里使用了 [ ] 来比较数字字符串,兼容性更好。另外,date 命令内部的时间解析依赖于系统 locale,建议在脚本开头设置 export LC_ALL=C 以保证行为一致。

注意事项

  1. 不同发行版的 date 命令可能略有差异,CentOS/Ubuntu 通常基于 GNU date,但 macOS 上的 BSD date 不支持 -d 参数,需要使用 -j -v 组合。
  2. 涉及多行命令时,注意引号的转义,防止 Shell 提前展开变量。
  3. 生产环境脚本建议加上错误检查,确保日期计算没有因闰年等问题出错。

目录

  1. Linux Shell 脚本中 date 命令常用用法
  2. 基础格式与当前时间
  3. 时间加减运算
  4. 显示明天的日期
  5. 显示昨天的日期
  6. 显示上个月的第一天
  7. 转换特定日期格式
  8. 获取上月末日期
  9. 方法一:利用相对时间
  10. 循环遍历日期
  11. 注意事项
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 论文阅读:Vision-skeleton 双模态框架用于帕金森病步态泛化评估
  • OPC 一人公司创业指南:AI 时代的商业闭环与实战
  • Go 语言快速学习总结
  • 3DMAX VR 渲染器局部渲染设置
  • 文心一言开源版部署与多维度测评实践
  • 数据结构:快速排序算法详解与实现
  • Qwen3-VL 基于 Llama-Factory 的 QLoRA 微调与部署全流程实战
  • Google Gemini 3 免费使用渠道与接入指南
  • OpenClaw 配置 GLM-4.7 Flash 与 DuckDuckGo 实现飞书机器人联网问答
  • Java 冷热钱包架构与用户资产安全保护
  • C++ 核心特性解析:引用、内联函数与 nullptr
  • 法奥机器人基础操作与编程指南
  • 基于 Web 技术栈的 Rokid JSAR AR 开发实战指南
  • Vivado 许可证获取与配置指南
  • Prompt 提示词编写指南:如何发挥大语言模型最大潜力
  • 深入解析 LlamaIndex Workflows:构建复杂 RAG 与智能体工作流
  • 基于 K-means 和决策树的餐饮企业客户分析实战
  • 基于 Python 和 Dlib 的人脸相似度对比实现
  • 飞书 OpenClaw 机器人 HTTP 401 认证失败原因分析
  • 基于算法的 LLM 代码翻译新范式:解决意图丢失问题

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online