#当前日期
$ date +%F
[root@kafka02 kafka]# date +%F
2019-08-12
#当前时间
$ date +"%F %H:%M:%S"
[root@kafka02 kafka]# date +"%F %H:%M:%S"
2019-08-12 12:23:20
#昨日
$ date -d yesterday +%F
#上一个月
$ date -d “KaTeX parse error: Expected 'EOF', got '#' at position 54: …@kafka02 kafka]#̲ date -d "(date +%Y%m)01 last month” +%Y%m
201907
#当月
$ date +%Y-%m
[root@kafka02 kafka]# date +%Y%m
201908
#下一个月
$ date -d “KaTeX parse error: Expected 'EOF', got '#' at position 54: …@kafka02 kafka]#̲ date -d "(date +%Y%m)01 next month” +%Y%m
201909
校准时间:
$ yum -y install ntp
$ ntpdate ntp.api.bz
$ date
求当前日期的是多少
[root@kafka02 kafka]# date -d “$1” +%Y-%m-%d
2019-08-12
[root@kafka02 kafka]# n_date=date -d "$1" +%Y-%m-%d
[root@kafka02 kafka]# echo $n_date
2019-08-12
求当前日期的明天
[root@kafka02 kafka]# date -d “${n_date} tomorrow” +%Y-%m-%d
2019-08-13
求当前日期的明天是第几天
[root@kafka02 kafka]# date -d “KaTeX parse error: Expected 'EOF', got '#' at position 47: …@kafka02 kafka]#̲ date -d "1 day…{n_date}” +%d`
[root@kafka02 kafka]# echo $t_d
12
求当前日期是星期几
[root@kafka02 kafka]# date -d “${n_date}” +%w
1
[root@kafka02 kafka]# date -d 20190812 +%w
1
[root@kafka02 kafka]# date -d “20190812” +%w
1
[root@kafka02 kafka]#
判断当前日期的前一周
[root@kafka02 kafka]# date -d “${n_date} 7 days ago” +%Y-%m-%d
2019-08-05
eg:
if [ $# -eq 1 ]; then
n_date=`date -d "$1" +%Y-%m-%d`
else
n_date=`date -d "1 days ago" +%Y-%m-%d` #n_date=`date -d " -1 days" +%Y-%m-%d`
fi
eg:
#如果昨天是周一
#那么跑批的周报开始日期为上个周一
#如果昨天不是周一,周报的跑批开始日期是本周一
if [ ${n_week} -eq 1 ]; then
n_week_start=`date -d "$t_date 7 days ago" +%Y-%m-%d`
else
if [ ${n_week} -eq 0 ]; then
n_week=7
fi
n_week_start=`date -d "$n_date $((n_week -1)) days ago" +%Y-%m-%d`
fi
[root@kafka02 kafka]# date -d “$n_date $((12-1)) days ago” +%Y-%m-%d
2019-08-01
eg:
#这里有要注意的地方是,周可以判断昨天(固定),好比通过昨天是周日判断今天是周一;而对月来说,昨天并不是一个固定值,28、30、31
#同理,如果今天是1号,月报跑批开始日期是上个月1号
if [ ${t_d} -eq 01 ]; then
n_month_start=`date -d "$n_date last-month" +%Y-%m-%d`
else
n_month_start=`date -d "$n_date $((t_d -1)) days ago" +%Y-%m-%d` #否则月报跑批日期是本月1号,#n_month_start=`date -d "-2 days $t_date" +%Y-%m-%d`
fi
获取上个月最后一天的日期方法,历遍一个月的每一天的脚本
#!/bin/bash
## 本月的第一天,这样的写法,不管在那一天执行脚本都是保证是1号
nowdate=`date +%Y%m01`
## 上个月的第一天
startdate=`date -d"$nowdate last month" +%Y%m%d`
## 上个月的最后一天
enddate=`date -d"$nowdate last day" +%Y%m%d`
## 循环读写这个的每一天
while (( $startdate <= $enddate ))
do
echo $startdate
startdate=`date -d "+1 day $startdate" +%Y%m%d`
done