busybox date 時間的加減


1、下載安裝busybox:

# wget http://busybox.net/downloads/busybox-1.29.3.tar.bz2
# tar -jxvf busybox-1.29.3.tar.bz2
# cd busybox-1.29.3
# make defconfig     //如果對根文件系統的大小不是很苛求,可以直接使用busybox的默認配置     
# make 
# make install

構建date鏈接
# ln -sf ./busybox ./date

 

busybox date參數詳解

[busybox-1.29.3]# ./date --help
BusyBox v1.29.3 (2019-11-25 11:00:35 CST) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

    [-s,--set] TIME    Set time to TIME
    -u,--utc    Work in UTC (don't convert to local time)
    -R,--rfc-2822    Output RFC-2822 compliant date string
    -I[SPEC]    Output ISO-8601 compliant date string
            SPEC='date' (default) for date only,
            'hours', 'minutes', or 'seconds' for date and
            time to the indicated precision
    -r,--reference FILE    Display last modification time of FILE
    -d,--date TIME    Display TIME, not 'now'
    -D FMT        Use FMT for -d TIME conversion

Recognized TIME formats:
    hh:mm[:ss]
    [YYYY.]MM.DD-hh:mm[:ss]
    YYYY-MM-DD hh:mm[:ss]
    [[[[[YY]YY]MM]DD]hh]mm[.ss]
    'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead

 

Linux系統中的date一般可以直接進行日期的相減,

例如: centos7系統

  date 獲取前一天的時間: date -d -1day     或者   date -d '1 day ago'

  date 獲取前一個月的時間: date -d '1 month ago'

  date 獲取前一年的時間: date -d '1 year ago'

 

而busybox date則不可以直接獲取前一天的時間,,需要時間數字相減的方法來實現獲取前一天的時間

例如: busybox date 獲取前一天的時間:

考慮到當前時間是年度第一天1月1日的情況,代碼如下:

year=`date +%Y`   // 獲取當前時間的年份
month=`date +%m`  // 獲取當前時間的月份
day=`date +%d`    // 獲取當前時間的日期

if [[ "$day" == "01" ]];then  // 如果當前時間是1號 ,則考慮一下月份問題
    if [[ "$month" == "01" ]];then  // 如果當前時間是1月1號,,獲取的前一天則是去年的最后一天 ,所以年份需要減一,月份和日期則是12月31日
        year=`expr $year - 1`
        yesterday="${year}-12-31"
    elif [[ "$month" == "03" ]];then   // 如果當前時間是3月1號,獲取的前一天則是2月的最后一天,2月又分28天和29天,,所以需要和4取余,
        year_type=`expr ${year} % 4`
        if [[ "$year_type" == "0" ]];then   // 與4取余為0則為閏年,這一年的2月最后一天是29號,,取余不為0則為平年,2月的最后一天是28號
            day="29"
        else
            day="28"
        fi
        yesterday="${year}-02-${day}"
// 1,3,5,7,8,10,12月均是31天 elif [[ "$month" == "02" || "$month" == "04" || "$month" == "06" || "$month" == "08" || "$month" == "09" || "$month" == "11" ]];then month=`expr ${month} - 1` yesterday="${year}-${month}-31" elif [[ "$month" == "05" ||"$month" == "07" || "$month" == "10" || "$month" == "12" ]];then month=`expr ${month} - 1` yesterday="${year}-${month}-30" fi else yesterday=${year}-${month}-`expr ${day} - 1` fi

echo $yesterday

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM