shell中日期操作
1. date -d操作
date +"%Y%m%d" -d "+n days" #今天的后n天日期 date +"%Y%m%d" -d "-n days" #今天的前n天日期
2. 常用日期格式输出
date +"%F" #输出: 2012-06-08 date +"%D" #输出: 06/08/12 date +"%Y%m%d %H:%M:%S" #输出: 20120608 04:52:28 date +"%Y%m%d" #输出: 20120608 date +"%Y%m%d %H:%M:%S" -d "+1 hours" #输出: 20120608 05:52:43 date +"%Y%m%d %H:%M:%S" -d "+1 days" #输出: 20120609 04:52:52 date +"%Y%m%d %H:%M:%S" -d "+1 months" #输出: 20120708 04:52:56 date +"%Y%m%d %H:%M:%S" -d "+1 years" #输出: 20130608 04:53:07 date +"%T" #输出: 05:03:21 date +"%F %T" #输出: 2012-06-08 05:03:34 date +"%D %T" #输出: 06/08/12 05:03:39
3. 日期格式转换
# 字符串转时间戳 date -d "2010-10-18 00:00:00" +%s #输出:1287331200 # 时间戳转字符串 date -d @1287331200 "+%Y-%m-%d" #输出:2010-10-18 # 获取指定日期的后N天,如果是前N天,则第二部中间是 - 步骤1:得到时间戳 seconds=`date -d "2010-10-18 00:00:00" +%s`
步骤2:加上N天的秒数86400*N seconds_new=`expr $seconds + 86400*N`
步骤3:获得指定日前加上一天的日前 date_new=`date -d @$seconds_new "+%Y-%m-%d"`
4. 获取上月末和最近一年的日期
dt_curr=20190322 #当月初 dt=`date -d"${dt_curr} -0 days" "+%Y%m01"` #去年今月初 dt_lastyear=`date -d"${dt} -1 years" "+%Y%m01"` #上月末 lastday=`date -d "${dt} -1 day" "+%Y%m%d"` #去年今月末 lastday_lastyear=`date -d "${dt_lastyear} -1 day" "+%Y%m%d"`
dt: 20190301
dt_lastyear: 20180301
lastday: 20190228
lastday_lastyear: 20180228
本文来自博客园,作者:硅谷工具人,转载请注明原文链接:https://www.cnblogs.com/30go/p/8302729.html