您好,登錄后才能下訂單哦!
在Linux下很容易解決這個問題
date +"%Y%m%d" -d "+n days" 今天的后n天日期
date +"%Y%m%d" -d "-n days" 今天的前n天日期
在UNIX下沒有'-d'選項,所以無法使用上面的方法
網上看到有一種通過時區進行調整echo `TZ=aaa16 date +%Y%m%d\ %H:%M:%S`
注意:date打印的并不是本地時區的時間,而是標準時間,既倫敦時間。
倫敦在西一區,北京在東八區相差八個時區。
TZ是一個系統的環境變量,記錄了系統所在的時區,aaa可以為任意字符串,16表示與標準時間的時差。
輸入env|grep TZ輸出TZ=EAT-8
同理,通過echo `TZ=aaa-32 date +%Y%m%d\ %H:%M:%S`可獲取后一天的日期
以上兩種是比較簡單的獲取方法,如果覺得這種方法不太靠譜,可以寫個shell腳本,以下自己寫的可以參考下
#!/bin/sh #輸入日期參數,不輸入默認當天 if [ $# -eq 1 ] then today=$1 else today=`date +%Y%m%d` fi #獲取年月日 year=`echo $today|cut -c 1-4` month=`echo $today|cut -c 5-6` day=`echo $today|cut -c 7-8` if [ $day -eq 1 ] then month=`expr $month - 1` #月份減一后如果為0則為上一年,月份置12,年份減一 [ $month -eq 0 ] && month=12 && year=`expr $year - 1` #獲取年月日歷 aaa=`cal $month $year` #獲取最后一天 day=`echo $aaa|awk '{print $NF}'` else day=`expr $day - 1` fi #如果日期只有一位則前補0 expr $day : "^.$" > /dev/null && day=0$day expr $month : "^.$" > /dev/null && month=0$month lastdate=$year$month$day echo "lastdate="$lastdate year=`echo $today|cut -c 1-4` month=`echo $today|cut -c 5-6` day=`echo $today|cut -c 7-8` aaa=`cal $month $year` bbb=`echo $aaa|awk '{print $NF}'` [ $bbb -eq $day ] && month=`expr $month + 1` && day=0 [ $month -gt 12 ] && month=1 && year=`expr $year + 1` day=`expr $day + 1` expr $day : "^.$" > /dev/null && day=0$day expr $month : "^.$" > /dev/null && month=0$month nextdate=$year$month$day echo "nextdate="$nextdate exit 0
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。