格式: date [選項] ... [+格式]
選項說明:
-d ,--date=字符串 顯示指定字符串所描述的時間
格式說明:
例子1:

#!/bin/bash ##1. 獲取當前系統時間 YYYY-MM-DD HH:MM:SS v_time_eq=`date "+%F %T"` v_time=`date "+%Y-%m-%d %H:%M:%S"` echo -e "系統當前時間v_time: ${v_time}, v_time_eq: ${v_time_eq} \tv_time 等價於 v_time_eq, 但是v_time 的格式,可讀性更強,建議使用。" ##2. 獲取指定格式的日期 YYYY-MM-DD, YYYYMMDD, YYYY/MM/DD v_date=`date -d "$v_time" +%Y%m%d` v_date_dir=`date -d "$v_time" +%Y/%m/%d` v_date_hor=`date -d "$v_time" +%Y-%m-%d` echo "系統當前日期v_date: ${v_date}, v_date_dir: ${v_date_dir}, v_date_hor: ${v_date_hor}。感受下不同的格式。" ##3.獲取前一天、后一天的日期 YYYYMMDD v_date_ago_1=`date -d "$v_date -1 day" +%Y%m%d` v_date_future_1=`date -d "$v_date 1 day" +%Y%m%d` echo "前一天v_date_ago_1: ${v_date_ago_1}, 后一天v_date_future_1: ${v_date_future_1}" ##4.獲取前一個月、后一個月的日期 YYYYMMDD v_date_ago_1month=`date -d "$v_date -1 month" +%Y%m%d` #遇到2月閏月的時候,會有問題,比如20170329,前一個月會變成20170301 v_date_ago_1month_leap=`date -d "20170329 -1 month" +%Y%m%d` v_date_future_1month=`date -d "$v_date 1 month" +%Y%m%d` echo "前一個月日期v_date_ago_1month: ${v_date_ago_1month}, 后一個月日期v_date_future_1month: ${v_date_future_1month}" echo "閏2月的時候,會有問題,比如20170329 的前一個月返回的是: ${v_date_ago_1month_leap}, 並不是20170228" ##5.獲取前一年、后一年的日期 YYYYMMDD v_date_ago_1year=`date -d "$v_date -1 year" +%Y%m%d` v_date_future_1year=`date -d "$v_date 1 year" +%Y%m%d` echo "前一年的日期v_date_ago_1year:${v_date_ago_1year}, 后一年的日期v_date_future_1year: ${v_date_future_1year}" ##6.獲取系統當前月份 月初日期 YYYYMMDD v_month=`date -d "$v_date" +%Y%m`01 v_month_ago_1=`date -d "$v_month -1 month" +%Y%m`01 v_month_future_1=`date -d "$v_month 1 month" +%Y%m`01 echo "系統當前月份月初日期v_month:${v_month},上個月月初日期v_month_ago_1:${v_month_ago_1}, 下個月月初日期v_month_future_1:${v_month_future_1}"
結果截圖:
例子2: 對於單獨使用小時、分鍾時,會有08,09這樣的出現,需要轉換成10進制,才能進行計算。

#!/bin/bash #當小時、分鍾是08、09時,計算出現錯誤,value too great for base (error token is "08") 數值太大不可為算數進制的基 #原因是shell將08、09當成了8進制數,而8進制數中合法的最大的數字是7,須讓Shell強制將08、09當成10進制來解釋,在前面加上10# v_hour=`date -d "20170701 08:05:00" +%H` v_min=`date -d "20170701 08:05:00" +%M` echo "v_hour is ${v_hour}" echo "v_min is ${v_min}" ## 轉換成10進制,才能計算 let v_hour=10#${v_hour} let v_min=10#${v_min} ## 計算總的分鍾數 let v_total_min=${v_hour}*60+${v_min} echo "v_total_min is ${v_total_min}"
結果截圖:
------------------------傳送門------------------------