偶尔在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.
本文介绍了一种在Linux环境下通过Shell脚本获取和格式化日期的方法,包括获取昨天、今天在本周的位置、本周周一和周日、本月第一天和最后一天的具体日期。通过使用date命令的不同参数组合,可以灵活地实现各种日期的计算。
1890





