参考博客:脚本之家(Shell中关于时间和日期的函数总结)https://www.jb51.net/article/139920.htm
测试并打印(可直接运行):
#!/bin/bash
#日期的格式可自定义
now_time1=`date +"%Y%m%d %H:%M:%S"`;
now_time2=`date +"%y-%m-%d %H:%M:%S"`;
now_time3=$(date);
echo "当前时间:\n 1、${now_time1}; \n 2、${now_time2} \n 3、${now_time3}"
YYYYMMDD_4=`date +"%Y%m%d" -d "-4 days"`;
YYYYMMDD_20=`date -d "-20 days" +"%Y%m%d" `;
echo "日期加减:\n 1、获取4天前:${YYYYMMDD_4};\n 2、获取20天前:${YYYYMMDD_20}";
# %w表示星期,星期只有0~6,0表示周日
# %W表示周,这一年的第几周
now_week1=`date +"%w"`;
now_week2=`date -d "5 days" +"%w"`;
now_week3=`date +"%W"`;
now_week4=`date -d "${1}" +"%W"`;
echo "当前星期数:\n 1、今天是星期${now_week1} \n 2、5天后为星期${now_week2} \n 3、本周为这一年的第${now_week3}周 \n 4、日期${1}为第${now_week4}周";
#参数的输入格式一般为:YYYYMMDD、YYYY-MM-DD、YYYY/MM/DD
#违法格式:YYYY.MM.DD、YYYY~MM~DD
#若无未传参,默认为当天
now_date1=`date -d "1 day ${1}" +%Y.%m.%d`;
now_date2=`date -d "${1}" +%Y-%m-%d`;
echo "将日期参数${1}的格式进行改动:\n 1、${now_date1} \n 2、${now_date2}"
now_d=`date +"%d"`;
now_d2=`date +"%D"`;
echo "日期%d、%D:\n 1、某一天:${now_d} \n 2、日期某一天:${now_d2}"
输出:
当前时间:
1、20201222 10:28:02;
2、20-12-22 10:28:02
3、Tue Dec 22 10:28:02 CST 2020
日期加减:
1、获取4天前:20201218;
2、获取20天前:20201202
当前星期数:
1、今天是星期2
2、5天后为星期0
3、本周为这一年的第51周
4、日期20200212为第06周
将日期参数20200212的格式进行改动:
1、2020.02.13
2、2020-02-12
日期%d、%D:
1、某一天:22
2、日期某一天:12/22/20
字符 | 含义 |
---|---|
%Y%m%d | %Y%m%d分别表示年月日;其中%Y年份格式为YYYY,而%y为YY |
%H%M%S | %H%M%S分别表示时分秒;其中%M表示分钟,而%m表示月份 |
%d、%D | %d表示天,例20号;而%D表示日期的某年某月某天,格式例12/18/20即2020年12月18日 |
$(date) | 原格式日期 |
% y | 年的最后两个数字( 1999则是99) |
% Y | 年(例如:1970,1996等) |
% m | 月(01…12) |
% d | 一个月的第几天(01…31) |
% D | 日期(mm/dd/yy) |
% H | 小时(00…23) |
% I | 小时(01…12) |
% k | 小时(0…23) |
% l | 小时(1…12) |
% M | 分(00…59) |
% s | 从1970年1月1日00:00:00到目前经历的秒数 |
% S | 秒(00…59) |
% p | 显示出AM或PM |
% r | 时间(hh:mm:ss AM或PM),12小时 |
% T | 时间(24小时制)(hh:mm:ss) |
% X | 显示时间的格式(%H:%M:%S) |
% Z | 时区 日期域 |
% a | 星期几的简称( Sun…Sat) |
% A | 星期几的全称( Sunday…Saturday) |
% b | 月的简称(Jan…Dec) |
% B | 月的全称(January…December) |
% c | 日期和时间( Mon Nov 8 14:12:46 CST 1999) |
% h | 和%b选项相同 |
% j | 一年的第几天(001…366) |
% w | 一个星期的第几天(0代表星期天) |
% W | 一年的第几个星期(00…53,星期一为第一天) |
% x | 显示日期的格式(mm/dd/yy) |