shell:date 日期处理

https://zclhj.top/2022/08/15/linux%e5%91%bd%e4%bb%a4%ef%bc%9adate/

用途

用于显示或设置系统的时间与日期

语法格式

date[+指定的格式]

用法

查看系统当前时间

# 默认格式
[linuxprobe@linuxprobe ~]$ date
Tue Aug 16 05:40:32 CST 2022

# 按照 年-月-日 时:分:秒 的格式查看当前系统的时间日期
[linuxprobe@linuxprobe ~]$ date "+%Y-%m-%d %H:%M:%S"
2022-08-16 05:41:13

设置系统时间

# 将系统当前时间设置为 2022 年 08 月 15 号,22时
[linuxprobe@linuxprobe ~]$ date -s "20220815 22:00"

查看今天是当年中的第几天

[linuxprobe@linuxprobe ~]$ date "+%j"
228

获取年月日

# 获取年
year=$(date +%Y)
month=$(date +%m)
day=$(date +%d)

日期运算

# 获取昨天
date -d "-1 day" +%d
date -d "yesterday" +%d
date -d "last day" +%d

# 获取明天
date -d "+1 day" +%d
date -d "tomorrow" +%d
date -d "next day" +%d

# 获取一个月前
date -d "-1 month" +%m
date -d "last month" +%m

# 获取一年前
date -d "-1 year" +%Y
date -d "last year" +%Y

# 获取上个月第一天
date -d "$(date +%Y-%m-01) -1 month" +%Y-%m-%d

# 获取上个月最后一天
date -d "$(date +%Y-%m-01) -1 day" +%Y-%m-%d

日期比较

转换为时间戳格式进行比较

date命令常见参数格式

参数 作用
%S 秒(00-59)
%M 分钟(00-59)
%H 小时(00-23)
%I 小时(00-12)
%m 月份(1-12)
%P 显示出 AM 或 PM
%a 缩写的工作日名称(例如:Sun)
%A 完整的工作日名称(例如:Sunday)
%b 缩写的月份名称(例如:Jan)
%B 完整的月份名称(例如:January)
%q 季度(1-4)
%y 简写的年份(例如:22)
%Y 完整的年份(例如:2022)
%d 本月中的第几天
%j 本年中的第几天
%n 换行符(Enter)
%t 跳格(Tab)
%s 时间戳