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 //如果對(duì)根文件系統(tǒng)的大小不是很苛求,可以直接使用busybox的默認(rèn)配置 # make # make install
構(gòu)建date鏈接
# ln -sf ./busybox ./date
busybox date參數(shù)詳解
[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系統(tǒng)中的date一般可以直接進(jìn)行日期的相減,
例如: centos7系統(tǒng)
date 獲取前一天的時(shí)間: date -d -1day 或者 date -d '1 day ago'
date 獲取前一個(gè)月的時(shí)間: date -d '1 month ago'
date 獲取前一年的時(shí)間: date -d '1 year ago'
而busybox date則不可以直接獲取前一天的時(shí)間,原因是缺少 coreutils 包,解決方法: apk add coreutils 即可
還可以使用 時(shí)間數(shù)字相減的方法來(lái)實(shí)現(xiàn)獲取前一天的時(shí)間
例如: busybox date 獲取前一天的時(shí)間:
考慮到當(dāng)前時(shí)間是年度第一天1月1日的情況,代碼如下:
year=`date +%Y` // 獲取當(dāng)前時(shí)間的年份 month=`date +%m` // 獲取當(dāng)前時(shí)間的月份 day=`date +%d` // 獲取當(dāng)前時(shí)間的日期 if [[ "$day" == "01" ]];then // 如果當(dāng)前時(shí)間是1號(hào) ,則考慮一下月份問(wèn)題 if [[ "$month" == "01" ]];then // 如果當(dāng)前時(shí)間是1月1號(hào),,獲取的前一天則是去年的最后一天 ,所以年份需要減一,月份和日期則是12月31日 year=`expr $year - 1` yesterday="${year}-12-31" elif [[ "$month" == "03" ]];then // 如果當(dāng)前時(shí)間是3月1號(hào),獲取的前一天則是2月的最后一天,2月又分28天和29天,,所以需要和4取余, year_type=`expr ${year} % 4` if [[ "$year_type" == "0" ]];then // 與4取余為0則為閏年,這一年的2月最后一天是29號(hào),,取余不為0則為平年,2月的最后一天是28號(hào) 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
努力成為一名優(yōu)秀的工程師
浙公網(wǎng)安備 33010602011771號(hào)