正文
在使用 crontab 定时任务和 shell 脚本切割 nginx 日志文件时,要用到时间戳、当月、上月、下月、上月初、上月末、下月初、下月末等等,其中有些日期不能直接获取,需要经过一定的计算才能得到。
shell date
一、date 基础格式化
格式 | 输出 | 含义 |
---|---|---|
date | 2022年 11月 15日 星期二 19:10:21 cst | 当前日期和时间 |
date +%y | 2022 | 年 |
date +%y | 22 | 年 |
date +%m | 11 | 月 |
date +%d | 15 | 日 |
date +%d | 11/15/22 | 当前日期 |
date +%y%m%d | 20221115 | 当前日期 |
date +%f | 2022-11-15 | 当前日期 |
date +%h | 19 | 时 |
date +%m | 20 | 分 |
date +%s | 30 | 秒 |
date +%s | 1668511253 | 时间戳 |
date +%t | 19:21:26 | 时分秒 |
date +%h:%m:%s | 19:21:26 | 时分秒 |
date +%w | 2 | 今天是周二 |
date +%w | 46 | 今年的第46周 |
cal | (当月日历) | 当月日历 |
二、date 日期计算
当前日期:2022-11-15
- 前一天
date -d "-1 day" # 2022年 11月 14日 星期一 19:34:01 cst date -d "-1 day" +%f # 2022-11-14 date -d "last day" +%f # 2022-11-14
- 前三天
date -d "-3 day" +%f # 2022-11-12
- 后一天
date -d "1 day" +%f # 2022-11-16 date -d "next day" +%f # 2022-11-16
- 上一月
date -d "-1 month" +%f # 2022-10-15 date -d "last month" +%y%m # 202210
- 下一月
date -d "1 month" +%f # 2022-12-15 date -d "next month" +%y-%m # 2022-12
- 上一年
date -d "-1 years" +%f # 2021-11-15 date -d "last year" +%y%m # 202111
- 时间戳转日期
date -d @1621563928 # 2021年 05月 21日 星期五 10:25:28 cst
- 日期转时间戳
date +%s -d "2022-10-21 10:38:48" # 1666319928
- 当月末日期和当月天数:先获取下个月第一天,减去一天
nextmonthstart=`date -d "${date} +1 month" "+%y%m01"` currmonthend=`date -d "${nextmonthstart} -1 day" "+%f"` currmonthdays=`date -d "${nextmonthstart} -1 day" "+%d"` echo $currmonthend # 2022-11-30 echo currmonthdays # 30
以上就是shell 中常用 date 日期的计算的详细内容,更多关于shell date日期计算的资料请关注代码网其它相关文章!
发表评论