shell的日期處理

2021-09-13 13:29:16 字數 3224 閱讀 6838

月的處理

年的處理

周的處理

時間格式

在開發shell指令碼中,對時間處理是難以避免的,所以接下來我們就來談談shell中時間處理的基本語法和他自帶的函式。

date +%y%m%d #獲取今天日期

20190324

date +%f #獲取今天日期

2019-03-24

date +%y%m%d #獲取今天日期

190324

date -d yesterday +%y%m%d #獲取昨天日期

20190323

date -d -2day +%y%m%d #獲取前天日期

20190322

date -d 2day +%y%m%d #獲取兩天後日期

20190326

date +"%y%m01"

#獲取當月第一天日期

20190301

date -d "$(

date -d "1 month" +"%y%m01"

) -1 day" +"%y%m%d"

#獲取當月最後一天日期

20190331

date -d -1year +%y%m%d #獲取去年當天日期

20180324

date

"+%y0101"

#獲取今年的第一天

20190101

date

"+%y1231"

20191231

如果是多日期變數處理,在引數-d後把變數加上就行

例:求日期變數today的前一天

today=20190101

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

20181231

date +%y%m #獲取本月日期

201903

date +%m #獲取本月月份

03date -d -1month +%y%m #獲取上月日期,注意:如果引數後沒有引號1和month中不能有空格

201902

date -d "1 month" +%y%m #獲取上月日期,注意:如果引數後有引號1和month中可以有空格

201904

date -d -1year +%y%m

201803

date +%y

2019

date +%y

19date -d 1year +%y

2020

date -d -1year +%y

2018

vi week.sh

#!/bin/bash

#取得入參的時間

indate=

$1echo indate=

$indate

#如果沒有輸入引數,預設輸入日期為今天if[

!$indate];

then

echo 未輸入指定日期,預設指定日期為今天

indate=

$(date +%y%m%d)

echo indate=

$indate

fi#取得統計日期(一般為入參的上週的今天)

upweekday=

`date -d "$indate -1 weeks" +%y%m%d`

echo upweekday=

$upweekday

#得到是當周的週幾 (0為星期日,1為星期一,...6為星期六)

whichday=

$(date -d $indate +%w)

echo whichday=

$whichday

#用(statday-whichday)+1,就是某周的第一天,這裡是星期一if[

$whichday

== 0 ]

;then

startday=

`date -d "$indate -6 days" +%y%m%d`

echo indate=

$indate

else

startday=

`date -d "$indate -$[$ - 1] days" +%y%m%d`

echo startday=

$startday

fi#某周的最後一天,星期日為最後一天

endday=

`date -d "$startday +6 days" +%y%m%d`

echo endday=

$endday

chmod u+x week.sh

sh week.sh 20190103

結果為:

indate=20190103

upweekday=20181227

whichday=4

startday=20181231

endday=20190106

% h 小時(00…23)

% i 小時(01…12)

% k 小時(0…23)

% l 小時(1…12)

% m 分(00…59)

% p 顯示出am或pm

% r 時間(hh:mm:ss am或pm),12小時

% s 從2023年1月1日00:00:00到目前經歷的秒數

% s 秒(00…59)

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

% x 顯示時間的格式(%h:%m:%s)

% z 時區 日期域

% a 星期幾的簡稱( sun…sat)

% a 星期幾的全稱( sunday…saturday)

% b 月的簡稱(jan…dec)

% b 月的全稱(january…december)

% c 日期和時間( mon nov 8 14:12:46 cst 1999)

% d 乙個月的第幾天(01…31)

% d 日期(mm/dd/yy)

% h 和%b選項相同

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

% m 月(01…12)

% w 乙個星期的第幾天(0代表星期天)

% w 一年的第幾個星期(00…53,星期一為第一天)

% x 顯示日期的格式(mm/dd/yy)

% y 年的最後兩個數字( 1999則是99)

% y 年(例如:1970,1996等)

日期的處理

1.將mmddyyyy格式的日期轉成指定格式的日期字串 將mmddyyyy日期字串轉成指定的格式 param datestring 日期字串 支援包含 param oldformate 轉換前的日期格式 param newformate 轉換後的日期格式 return string 返回轉換後的日期...

日期的處理

1.dateformat類日期 時間格式化抽象類,子類為 dateformat。使用方法很簡單,直接上例子 string format date date 方法,把date型別轉換成符合指定格式的string物件 date parse string str 方法,把符合某種格式的string類反轉回...

shell日期計算

當對系統當前時間進行加減時,只需要輸入 date d 3 hour y m d h 可以獲取3小時前的時間。如果按照自己設定的時間進行加減時,不能輸入 date d 2014040722 3 hour y m d h 這樣輸出的值不正確,我測試的輸出值為 201404072121。而需要輸入 dat...