shell操作日期時間

2022-04-10 09:20:22 字數 3026 閱讀 2770

linux 系統為我們提供了乙個命令 date,專門用來顯示或者設定系統日期時間的。

語法格式為:

date [option]... [+format] 或者

date [-u|--utc|--universal] [mmddhhmm[[cc]yy][.ss]]

常用的可選項有:

--help 顯示輔助資訊

--version 顯示 date 命令版本資訊

-u 顯示目前的格林威治時間

-d 做日期時間相關的運算

--date='-datestr' 做日期時間的相關運算

1、顯示系統當前日期時間    date

以指定格式顯示日期時間        date '+%y-%m-%d %h:%m:%s'

2、設定系統日期時間   date -s "2017-01-01 01:01"

3、 有時候,我們操作日期時間,經常會要獲取前幾天或者後幾天的時間,那麼 date 命令也 給我們提供了實現這個功能的可選項'-d'和-date,請看下面細細的例子

先看'-d':

## 獲取下一天的時間

date -d next-day '+%y-%m-%d %h:%m:%s'

date -d 'next day' '+%y-%m-%d %h:%m:%s'

另外一種寫法:

date '+%y-%m-%d %h:%m:%s' -d tomorrow

## 獲取上一天的時間

date -d last-day '+%y-%m-%d %h:%m:%s'

另外一種寫法:

date '+%y-%m-%d %h:%m:%s' -d yesterday

那麼類似的,其實, last-year, last-month, last-day, last-week, last-hour, last-minute, last-second 都有對應的實現。 相反的, last 對應 next,自己可以根據實際情況靈活組織

接下來,我們來看'-date', 它幫我實現任意時間前後的計算,來看具體的例子:

## 獲取一天以後的日期時間     date '+%y-%m-%d %h:%m:%s' --date='1 day'

date '+%y-%m-%d %h:%m:%s' --date='-1 day ago' 

## 獲取一天以前的日期時間        date '+%y-%m-%d %h:%m:%s' --date='-1 day'

date '+%y-%m-%d %h:%m:%s' --date='1 day ago'

上面的例子顯示出來了使用的格式,使用精髓在於改變前面的字串顯示格式,改變量 據,改變要操作的日期對應字段,除了天也有對應的其他實現: year, month, week, day, hour, minute, second, monday( 星期,七天都可)

4、 date 能用來顯示或設定系統的日期和時間,在顯示方面,使用者能設定欲顯示的格式,格式設定為乙個加號後接數個標記,其中可用的標記列表如下:

使用範例: date '+%y-%m-%d %h:%m:%s'

日期方面:

%a : 星期幾 (sun..sat)

%a : 星期幾 (sunday..saturday)

%b : 月份 (jan..dec)

%b : 月份 (january..december)

%c : 直接顯示日期和時間

%d : 日 (01..31)

%d : 直接顯示日期 (mm/dd/yy)

%h : 同 %b

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

%m : 月份 (01..12)

%u : 一年中的第幾周 (00..53) (以 sunday 為一周的第一天的情形)

%w : 一周中的第幾天 (0..6)

%w : 一年中的第幾周 (00..53) (以 monday 為一周的第一天的情形)

%x : 直接顯示日期 (mm/dd/yy)

%y : 年份的最後兩位數字 (00.99)

%y : 完整年份 (0000..9999)

時間方面:

% : 印出

% %n : 下一行

%t : 跳格

%h : 小時(00..23)

%i : 小時(01..12)

%k : 小時(0..23)

%l : 小時(1..12)

%m : 分鐘(00..59)

%p : 顯示本地 am 或 pm

%p : 顯示本地 am 或 pm

%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [ap]m)

%s : 從 1970 年 1 月 1 日 00:00:00 utc 到目前為止的秒數 %s : 秒(00..61)

%t : 直接顯示時間 (24 小時制)

%x : 相當於 %h:%m:%s %p

%z : 顯示時區

若是不以加號作為開頭,則表示要設定時間,而時間格式為 mmddhhmm[[cc]yy][.ss]

mm 為月份,

dd 為日,

hh 為小時,

mm 為分鐘,

cc 為年份前兩位數字,

yy 為年份後兩位數字,

ss 為秒數

5、有用小技巧         

## 獲取相對某個日期前後的日期: date -d 'may 14 -2 weeks'

## 把時間當中無用的 0 去掉,比如: 01:02:25 會變成 1:2:25        date '+%-h:%-m:%-s'

## 顯示檔案最後被更改的時間   date "+%y-%m-%d %h:%m:%s" -r bin/removejdk.sh

## 求兩個字串日期之間相隔的天數  expr '(' $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09") ')' / 86400

## shell 中加減指定間隔單位

a=`date +%y-%m-%d`

b=`date +%y-%m-%d -d "$a +36 hours"`

shell中日期時間操作

使用許可權 所有使用者 使用方式 date u d datestr s datestr utc universal date datestr set datestr help version format mmddhhmm cc yy ss 說明 date 能用來顯示或設定系統的日期和時間,在顯示方...

linux整理 23Shell操作日期時間

shell操作日期時間 date print or set the system date and time linux系統為我們提供了乙個命令date,專門用來顯示或者設定系統日期時間的。語法格式為 date option format 或者 date u utc universal mmddhh...

shell中日期操作

1.date d操作 date y m d d n days 今天的後n天日期 date y m d d n days 今天的前n天日期 2.常用日期格式輸出 date f 輸出 2012 06 08 date d 輸出 06 08 12 date y m d h m s 輸出 20120608 0...