版权声明:欢迎转载 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.