shell脚本获取昨天今天本周周一本周周日本月第一天本月最后一天

版权声明:欢迎转载 https://blog.csdn.net/feinifi/article/details/83826456

偶尔在linux上需要做脚本,并设置脚本按照日期来计算相关数据,这时候就涉及到日期的获取,这里介绍简单的几个重要日期的获取,分别是昨天,今天是本周的第几天,本周周一,本周周日,本月第一天,本月最后一天。

脚本获取日期并格式化,思路都是相同的,首先获取日期,然后给出格式化表达式。

昨天的获取有两种方式:

yesterday=`date -d '1 days ago' +%Y%m%d`

yesterday2=`date -d yesterday +%Y%m%d`

今天是本周的第几天:

today=`date +%Y%m%d`

whichday=`date -d $today +%w`

当前周一:

monday=`date -d "$today -$[${whichday}-1] days" +%Y%m%d`

当前周日:

sunday=`date -d "$monday+6 days" +%Y%m%d`

当月第一天:

firstdate=`date +%Y%m01`

当月最后一天:

lastdate=`date -d"$(date -d"1 month" +%Y%m01) -1 day" +%Y%m%d`

综合实例:date.sh

#!/bin/bash
#昨日
yesterday=`date -d '1 days ago' +%Y%m%d`
echo "yesterday is $yesterday."
yesterday2=`date -d yesterday +%Y%m%d`
echo "yesterday is $yesterday2 by 'date -d yesterday +%Y%m%d'."
#今日
today=`date +%Y%m%d`
echo "today is $today."
#当前周的第几天
whichday=$(date -d $today +%w)
echo "today is $whichday day of this week."
#当周的周一
monday=`date -d "$today -$[${whichday}-1] days" +%Y%m%d`
#当周的周日
sunday=`date -d "$monday+6 days" +%Y%m%d`
echo "monday is $monday of this week."
echo "sunday is $sunday of this week."
#当月第一天(这里取巧用了01直接代替当月第一天的日期)
firstdate=`date +%Y%m01`
echo "the firstday of this month is $firstdate."
#当月最后一天(当月第一天的后一个月第一天的前一天就是当月最后一天,有点绕)
lastdate=`date -d"$(date -d"1 month" +%Y%m01) -1 day" +%Y%m%d`
echo "the lastday of this month is $lastdate."

运行结果:

[root@server ~]# ./date.sh 
yesterday is 20181106.
yesterday is 20181106 by 'date -d yesterday +%Y%m%d'.
today is 20181107.
today is 3 day of this week.
monday is 20181105 of this week.
sunday is 20181111 of this week.
the firstday of this month is 20181101.
the lastday of this month is 20181130. 

 

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/83826456
今日推荐