背景:经常写shell,但是很多种时间格式规范真是记不住哈,😄,索性记录一下
一、 获取-年
下面的这两种写法都成
year=$(date "+%Y")
year=`date "+%Y"`echo -e "测试输出 年: ${year}"
输出结果:
二、 获取-年月
获取年月的话就是 ( d a t e " + (date "+%Y-%m") 这种写法,根据你喜欢输出格式的不同,可以写成 (date"+(date “+%Y-%m”) 、 ( d a t e " + (date "+%Y%m") 、 (date"+(date “+%Y %m”) 都是可以的
还有一种写法就是单独获取月份:$(date “+%m”),将其中的年去掉就可以了
month=$(date "+%Y-%m")echo -e "测试输出 年 月: ${month}"
输出结果
三、 获取-年月日
current_day=$(date "+%Y-%m-%d")echo -e "测试输出 年 月日: ${current_day}"
输出结果
四、 获取-年月日带时分秒
current_time=$(date "+%Y-%m-%d %H:%M:%S")echo -e "测试输出 年 月日 时 分 秒: ${current_time}"
输出结果
五、 获取-上一年
current_year=$(date +%Y)
previous_year=$(($current_year - 1))echo -e "测试上一年: ${previous_year}"
输出结果
获取-下一年
六、 获取-上个月
简单写法是这个,直接一条命令就解决了,下面的两种写法都成
last_month=$(date "+%Y-%m" -d '1 month ago')
last_month=`date -d "last month" +%Y-%m`
echo -e "获取上个月: ${last_month}"
输出结果
七、 获取-下个月
next_month=`date -d "next month" +%Y-%m`echo -e "测试下个月: ${next_month}"
输出结果
八、 获取-昨天
获取昨天的日期有下面的三种写法,有时间的可以多测试一下
yesterday=`date -d "last day" +%Y-%m-%d`
yesterday=`date -d "1 days ago" +%Y-%m-%d`
yesterday=`date -d yesterday +%Y-%m-%d`echo -e "测试昨天: ${yesterday}"
输出结果
九、 获取-明天
下面的两种写法都成
tomorrow=`date -d next-day +%Y-%m-%d`
tomorrow=`date -d tomorrow +%Y-%m-%d`echo -e "测试明天: ${tomorrow}"
输出结果
十、 获取-前一个小时
十一、 获取-后一个小时
十二、 获取结束时间和开始时间的差
start_time=$(date "+%Y-%m-%d %H:%M:%S")echo -e "开始时间: ${start_time}"sleep 10end_time=$(date "+%Y-%m-%d %H:%M:%S")echo -e "结束时间: ${end_time}"cha_time=$(($(date +%s -d "${end_time}")-$(date +%s -d "${start_time}")));echo -e "时间差: ${cha_time}"
输出结果