linux整理 23Shell操作日期時間

2021-09-11 04:28:22 字數 4540 閱讀 4093

shell操作日期時間

date - print or set the system date and time

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

語法格式為

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

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

常用的可選項有:

--help:顯示輔助資訊

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

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

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

[root@hadoop ~]# date

以指定格式顯示日期時間

[root@hadoop ~]# date 『+%y-%m-%d %h:%m:%s』

2、設定系統日期時間

[root@hadoop ~]#date -s 「2017-01-01 01:01」

[root@hadoop ~]# date --set=「2017-01-01 01:01」

3、獲取前幾天或者後幾天的時間

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

先看』-d』:

## 獲取下一天的時間

[root@hadoop ~]# date -d next-day '+%y-%m-%d %h:%m:%s'

[root@hadoop ~]# date -d 'next day' '+%y-%m-%d %h:%m:%s'

另外一種寫法:

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' -d tomorrow

##獲取上一天的時間

[root@hadoop ~]# date -d last-day '+%y-%m-%d %h:%m:%s'

另外一種寫法:

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' -d yesterday

## 獲取下一月的時間

[root@hadoop ~]# date -d next-month '+%y-%m-%d %h:%m:%s'

## 獲取上一月的時間

[root@hadoop ~]# date -d last-month '+%y-%m-%d %h:%m:%s'

## 獲取下一年的時間

[root@hadoop ~]# date -d next-year '+%y-%m-%d %h:%m:%s'

## 獲取上一年的時間

[root@hadoop ~]# date -d last-year '+%y-%m-%d %h:%m:%s'

[root@hadoop ~]# date -d next-week '+%y-%m-%d %h:%m:%s'

[root@hadoop ~]# date -d next-monday '+%y-%m-%d %h:%m:%s'

[root@hadoop ~]# date -d next-thursday '+%y-%m-%d %h:%m:%s'

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

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

##獲取一天以後的日期時間

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' --date='1 day'

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' --date='-1 day ago'

## 獲取一天以前的日期時間

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' --date='-1 day'

[root@hadoop ~]# date '+%y-%m-%d %h:%m:%s' --date='1 day ago'

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

4、date 能用來顯示或設定系統的日期和時間,

在顯示方面,使用者能設定欲顯示的格式,格式設定為乙個加號後接數個標記,其中可用的標記列表如下:

使用範例:

[root@hadoop ~]# 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/yyyy)

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

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

時間方面:

%%: 列印出%

%n : 下一行

%t : 跳格

%h : 小時(00..23)

%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 為秒數

例子date "050602032017.55"

5、有用的小技巧

## 獲取相對某個日期前後的日期:

[root@hadoop ~]# date -d 'may 14 -2 weeks'

## 把時間當中無用的0去掉,比如:01:02:25會變成1:2:25

[root@hadoop ~]# date '+%-h:%-m:%-s'

## 顯示檔案最後被更改的時間

[root@hadoop ~]# date "+%y-%m-%d %h:%m:%s" -r bin/removejdk.sh

## 求兩個字串日期之間相隔的天數

[root@hadoop ~]#

expr '(' $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09") ')' / 86400

expr `expr $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09")` / 86400

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

[root@hadoop ~]# a=`date +%y-%m-%d`

[root@hadoop ~]# b=`date +%y-%m-%d -d "$a +48 hours"`

23 shell 程序替換

程序替換和命令替換非常相似。命令替換是把乙個命令的輸出結果賦值給另乙個變數,例如dir files ls l 或date time date 而程序替換則是把乙個命令的輸出結果傳遞給另乙個 組 命令。寫法含義 注意點本質 commands 它借助於輸入重定向,可以將它的輸出結果作為另乙個命令的輸入 ...

Linux基礎操作整理

1,目錄操作 1.1建立目錄 1.1.1使用 mkdir 命令建立目錄 mkdir home testfolder 1.2切換目錄 1.2.1使用 cd 命令切換目錄 cd home testfolder 1.3移動目錄 1.3.1使用 mv 命令移動目錄 mv home testfolder va...

Linux 運維1月23日4 21 4 24

4.21 lnmp環境介紹 linux nginx mariadb php 4.22 23 25 mariadb安裝 3 將mariadb解壓 移動並改名到 usr local mysql 3 建立資料庫目錄 mkdir p data mysq 4 建立mysql使用者 不指定家目錄,指定shell...