Calcifer Calcifer 2 Calcifer 3 Calcifer 4
Linux

linux日期格式化

2015/08/01 01:18 6179 次阅读 王梓
打赏
✸ ✸ ✸

date 命令基础

Linux 的 date 命令是日期时间处理的瑞士军刀。它不仅能显示当前时间,还能做日期计算、格式化输出,是 shell 脚本中最常用的命令之一。

格式化输出

核心语法:date +FORMAT,用 + 号后跟格式字符串:

# 常用格式
date +%Y-%m-%d          # 2025-03-02  (年-月-日)
date +%Y%m%d            # 20250302    (紧凑格式,常用于文件名)
date +%H:%M:%S          # 14:30:25    (时:分:秒)
date +%Y-%m-%d_%H%M%S   # 2025-03-02_143025 (时间戳文件名)
date +%s                # 1740912625  (Unix 时间戳,秒)
date +%N                # 纳秒
date +%A                # Monday      (星期几英文)
date +%u                # 1           (星期几数字,1=周一)
date +%j                # 061         (一年中的第几天)

格式符速查表

格式符含义示例
%Y四位年份2025
%y两位年份25
%m月份(01-12)03
%d日(01-31)02
%H小时(00-23)14
%M分钟(00-59)30
%S秒(00-59)25
%sUnix时间戳1740912625
%A星期(英文全称)Monday
%a星期(英文缩写)Mon
%F等同 %Y-%m-%d2025-03-02
%T等同 %H:%M:%S14:30:25

日期计算(--date 参数)

--date(简写 -d)是 date 命令最强大的功能,支持自然语言式的日期偏移:

# 过去的日期
date +%Y%m%d -d "-1 day"       # 昨天: 20250301
date +%Y%m%d -d "-7 day"       # 7天前
date +%Y%m%d -d "-1 month"     # 上个月的今天
date +%Y%m%d -d "-1 year"      # 去年的今天
date +%Y%m%d -d "last monday"  # 上周一

# 未来的日期
date +%Y%m%d -d "+1 day"       # 明天
date +%Y%m%d -d "+3 month"     # 3个月后
date +%Y%m%d -d "next friday"  # 下周五

# 指定日期再偏移
date +%Y%m%d -d "2025-01-31 +1 month"  # 从指定日期偏移
date +%A -d "2025-12-25"               # 查某天是星期几

实战场景

场景1:日志文件按日期归档

#!/bin/bash
# 将昨天的日志移到归档目录
YESTERDAY=$(date +%Y%m%d -d "-1 day")
mv /var/log/app/app.log /var/log/app/archive/app_${YESTERDAY}.log
gzip /var/log/app/archive/app_${YESTERDAY}.log

场景2:备份脚本带时间戳

#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mysqldump -uroot -p'pass' mydb > /backup/mydb_${TIMESTAMP}.sql
echo "Backup done: mydb_${TIMESTAMP}.sql"

场景3:计算脚本执行耗时

#!/bin/bash
START=$(date +%s)

# ... 你的业务逻辑 ...
sleep 3

END=$(date +%s)
COST=$((END - START))
echo "耗时: ${COST} 秒"

场景4:生成最近7天的日期列表

for i in $(seq 0 6); do
    date +%Y-%m-%d -d "-${i} day"
done
# 输出:
# 2025-03-02
# 2025-03-01
# 2025-02-28
# ...

macOS 的区别

macOS 用的是 BSD 版 date,语法不同:

# Linux (GNU date)
date +%Y%m%d -d "-1 day"

# macOS (BSD date)
date -v-1d +%Y%m%d

如果需要跨平台兼容,建议在 macOS 上安装 GNU coreutils:brew install coreutils,然后用 gdate 命令。

总结

date 命令的核心就两件事:+FORMAT 控制输出格式,-d 做日期偏移计算。掌握这两个参数,日常脚本中的日期处理基本都能搞定。

✸ ✸ ✸

📜 版权声明

本文作者:王梓 | 原文链接:https://www.bthlt.com/note/1772451-Linuxlinux日期格式化

出处:葫芦的运维日志 | 转载请注明出处并保留原文链接

📜 留言板

留言提交后需管理员审核通过才会显示