shell(Linux)日期加减、格式转换

参考博客:脚本之家(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)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值