shell 日期循環

#!/bin/sh
if [ $# == 2 ]; then
    datebeg=$1
    dateend=$2
else
    echo "請輸入開始時間和結束日期,格式爲2017-04-04"
    exit 1
fi

beg_s=`date -d "$datebeg" +%s`
end_s=`date -d "$dateend" +%s`

echo "處理時間範圍:$beg_s 至 $end_s"

while [ "$beg_s" -le "$end_s" ];do
    day=`date -d @$beg_s +"%Y-%m-%d"`;
    echo "當前日期:$day"
    beg_s=$((beg_s+86400));
done

echo "日期全部處理完成"
 

日期格式字符串列表

%H 小時,24小時制(00~23) 
%I 小時,12小時制(01~12) 
%k 小時,24小時制(0~23) 
%l 小時,12小時制(1~12) 
%M 分鐘(00~59) 
%p 顯示出AM或PM 
%r 顯示時間,12小時制(hh:mm:ss %p) 
%s 從1970年1月1日00:00:00到目前經歷的秒數 
%S 顯示秒(00~59) 
%T 顯示時間,24小時制(hh:mm:ss) 
%X 顯示時間的格式(%H:%M:%S) 
%Z 顯示時區,日期域(CST) 
%a 星期的簡稱(Sun~Sat) 
%A 星期的全稱(Sunday~Saturday) 
%h,%b 月的簡稱(Jan~Dec) 
%B 月的全稱(January~December) 
%c 日期和時間(Tue Nov 20 14:12:58 2012)(不加參數時的效果) 
%d 一個月的第幾天(01~31) 
%x,%D 日期(mm/dd/yy) 
%j 一年的第幾天(001~366) 
%m 月份(01~12) 
%w 一個星期的第幾天(0代表星期天) 
%W 一年的第幾個星期(00~53,星期一爲第一天) 
%y 年的最後兩個數字(1999則是99)
  • 使用當前時間,可以忽略選項,指明格式化參數.如date +"%Y-%m-%d"
  • 使用其餘時間,需要-d參數,後面需要再跟字符串表達時間偏移值

 

發佈了75 篇原創文章 · 獲贊 100 · 訪問量 128萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章