Shell中date的用法

2021-07-07 01:23:37 字數 3076 閱讀 1054

#man date可以看到date的help檔案

#date 獲取當前時間

#date -d "-1week" +%y%m%d 獲取上週日期(day,month,year,hour)

#date--date="-24 hour" +%y%m%d 同上

date_now=`date+%s` shell指令碼裡面賦給變數值

%% 輸出%符號

%a 當前域的星期縮寫 (sun..sat)

%a 當前域的星期全寫 (sunday..saturday)

%b 當前域的月份縮寫(jan..dec)

%b 當前域的月份全稱 (january..december)

%c 當前域的預設時間格式 (sat nov 04 12:02:33 est 1989)

%c n百年 [00-99]

%d 兩位的天 (01..31)

%d 短時間格式 (mm/dd/yy)

%e 短格式天 ( 1..31)

%f 檔案時間格式 same as %y-%m-%d

%h same as %b

%h 24小時制的小時 (00..23)

%i 12小時制的小時 (01..12)

%j 一年中的第幾天 (001..366)

%k 短格式24小時制的小時 ( 0..23)

%l 短格式12小時制的小時 ( 1..12)

%m 雙位月份 (01..12)

%m 雙位分鐘 (00..59)

%n 換行

%n 十億分之一秒(000000000..999999999)

%p 大寫的當前域的上下午指示 (blank in many locales)

%p 小寫的當前域的上下午指示 (blank in many locales)

%r 12小時制的時間表示(時:分:秒,雙位) time, 12-hour (hh:mm:ss [ap]m)

%r 24小時制的時間表示 (時:分,雙位)time, 24-hour (hh:mm)

%s 自基礎時間 1970-01-01 00:00:00 到當前時刻的秒數(a gnu extension)

%s 雙位秒 second (00..60);

%t 橫向製表位(tab)

%t 24小時制時間表示(hh:mm:ss)

%u 數字表示的星期(從星期一開始 1-7)

%u 一年中的第幾周 星期天為開始 (00..53)

%v 一年中的第幾周 星期一為開始 (01..53)

%w 一周中的第幾天 星期天為開始 (0..6)

%w 一年中的第幾周 星期一為開始 (00..53)

%x 本地日期格式 (mm/dd/yy)

%x 本地時間格式 (%h:%m:%s)

%y 兩位的年(00..99)

%y 年 (1970…)

例子:編寫shell指令碼計算離自己生日還有多少天?

[plain]view plain

copy

read -p"input your birthday(yyyymmdd):" date1  

m=`date--date="$date1" +%m` #得到生日的月  

d=`date--date="$date1" +%d` #得到生日的日  

date_now=`date+%s` #得到當前時間的秒值  

y=`date +%y` #得到當前時間的年  

birth=`date--date="$y$m$d" +%s` #得到今年的生日日期的秒值  

internal=$(($birth-$date_now)) #計算今日到生日日期的間隔時間  

if ["$internal" -lt "0" ]; then #判斷今天的生日是否已過  

birth=`date--date="$(($y+1))$m$d" +%s` #得到明天的生日日期秒值  

internal=$(($birth-$date_now))#計算今天到下乙個生日的間隔時間  

fi  

echo "thereis :$((einternal/60/60/24)) days." #輸出結果,秒換算為天  

建立以當前時間為檔名的

mkdir `date+%y%m%d`

備份以時間做為檔名的

tar cvf./htdocs`date +%y%m%d`.tar ./*

date命令如何獲得上星期的日期?

lastmonth=`date+%y-%m --date="-1 month"`"-01";

然後 awk -v 作為乙個引數這樣傳進去簡單點。

#date -d "-1week" "+%y%m%d %a"

或者:#date -d "last week" +%y%m%d

舉一反三:date命令獲得前天,昨天,明天,後天,上個月,下個月的日期

date -d "-2 day" "+%y%m%d %a"   或 date --date="2 days ago""+%y%m%d %a"

date -d "-1 day" "+%y%m%d %a"   或 date --date="1 day ago""+%y%m%d %a"

date -d "1 day" "+%y%m%d %a"

date -d "2 day" "+%y%m%d %a"

date -d "-1 month" "+%y%m%d %a"

date -d "1 month" "+%y%m%d %a"

echo `date -d"-1 month" "+%y-%m-%d %x"`

還有其他用法:

date+%s   可以得到unix的時間戳;

已知時間戳,求當前日期

date --date="19700101 +$(($((`date +%s`))+(8*60*60))) sec" +%y%m%d" "%h:%m:%s

ps:從2023年01月01日開始算, +$(($((`date +%s`))+(8*60*60))) sec 表示過了多少秒,其中(8*60*60)表示8個小時,時區問題,我國時間與世界時間相差8小時。

**:

shell 中date 的用法

1.獲取離今天的上週 上月 下週 下月的日期 html view plain copy date d 1 week y m d a date d 1 day y m d a date d 2 day y m d a date d 1 month y m d a date d 1 month y m ...

shell 中 date的用法

1.獲取離今天的上週 上月 下週 下月的日期 html view plain copy date d 1 week y m d a date d 1 day y m d a date d 2 day y m d a date d 1 month y m d a date d 1 month y m ...

SHELL下date命令的用法

date命令如何獲得上星期的日期?date d 1 week y m d a 舉一反三 date命令獲得前天,昨天,明天,後天,上個月,下個月的日期 date d 2 day y m d a 或 date date 2 days ago y m d a date d 1 day y m d a 或 ...