日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

每天学一点儿shell:linux中时间函数的date的用法

發布時間:2025/3/19 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天学一点儿shell:linux中时间函数的date的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、linux中date函數格式
  • 2、date日期函數的具體用法
    • 2.1、獲取相應格式的日期
    • 2.2、獲取相隔時間段的日期
      • 2.2.1、獲取今天的日期
      • 2.2.2、獲取昨天的日期
      • 2.2.3、獲取明天的日期
    • 2.3、獲取當前時間戳
    • 2.4、將指定時間字符串轉成日期格式
    • 2.5、獲取指定日期前1天的日期
    • 2.6、獲取指定日期后1天的日期
    • 2.7、獲取指定日期上1個月的第一天
    • 2.8、獲取指定日期上1個月的最后一天

1、linux中date函數格式

首先date函數的使用格式如下:

用法:date [選項]... [+格式]或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

其中的格式解釋所示:

符號解釋
%%一個文字的 %
%a當前locale 的星期名縮寫(例如: 日,代表星期日)
%A當前locale 的星期名全稱 (如:星期日)
%b當前locale 的月名縮寫 (如:一,代表一月)
%B當前locale 的月名全稱 (如:一月)
%c當前locale 的日期和時間 (如:2005年3月3日 星期四 23:05:25)
%C世紀;比如 %Y,通常為省略當前年份的后兩位數字(例如:20)
%d按月計的日期(例如:01)
%D按月計的日期;等于%m/%d/%y
%e按月計的日期,添加空格,等于%_d
%F完整日期格式,等價于 %Y-%m-%d
%gISO-8601 格式年份的最后兩位 (參見%G)
%GISO-8601 格式年份 (參見%V),一般只和 %V 結合使用
%h等于%b
%H小時(00-23)
%I小時(00-12)
%j按年計的日期(001-366)
%khour, space padded ( 0…23); same as %_H
%lhour, space padded ( 1…12); same as %_I
%mmonth (01…12)
%Mminute (00…59)
%n換行
%N納秒(000000000-999999999)
%p當前locale 下的"上午"或者"下午",未知時輸出為空
%P與%p 類似,但是輸出小寫字母
%r當前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)
%R24 小時時間的時和分,等價于 %H:%M
%s自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數
%S秒(00-60)
%t輸出制表符 Tab
%T時間,等于%H:%M:%S
%u星期,1 代表星期一
%U一年中的第幾周,以周日為每星期第一天(00-53)
%VISO-8601 格式規范下的一年中第幾周,以周一為每星期第一天(01-53)
%w一星期中的第幾日(0-6),0 代表周一
%W一年中的第幾周,以周一為每星期第一天(00-53)
%x當前locale 下的日期描述 (如:12/31/99)
%X當前locale 下的時間描述 (如:23:13:48)
%y年份最后兩位數位 (00-99)
%Y年份
%Z按字母表排序的時區縮寫 (例如,EDT)

2、date日期函數的具體用法

2.1、獲取相應格式的日期

輸出日期格式為yyyy-MM-dd HH:mm:ss的時間,以當前日期時間為例:

方式一:

[root@hadoop-master ~]# date -d today +"%Y-%m-%d %T" 2020-09-16 19:45:39

方式二:

[root@hadoop-master ~]# date +"%Y-%m-%d %T" 2020-09-16 19:48:39

方式三:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S" 2020-09-16 19:51:42

舉個其他數據格式的例子,例如輸出格式為yyyMMddHHmmss格式

[root@hadoop-master ~]# date +"%Y%m%d%H%M%S" 20200916195408

2.2、獲取相隔時間段的日期

2.2.1、獲取今天的日期

方式一:

[root@hadoop-master ~]# date +%Y%m%d 20200916

方式二:

[root@hadoop-master ~]# date +%F 2020-09-16

方式三:

[root@hadoop-master ~]# echo $(date +%Y%m%d) 20200916

2.2.2、獲取昨天的日期

方式一:

[root@hadoop-master ~]# date -d yesterday +%Y%m%d 20200915

方式二:

[root@hadoop-master ~]# date -d -1day +%Y%m%d 20200915

方式三:

[root@hadoop-master ~]# date -d "-1 day" +%Y%m%d 20200915

方式四:

[root@hadoop-master ~]# date +%Y%m%d --date="-1 day" 20200915

方式五:

[root@hadoop-master ~]# date +%Y%m%d --date="1 day ago" 20200915

根據以上的表達式我們推測出17天前的日期為:

[root@hadoop-master ~]# date +%Y%m%d --date=-17day 20200830

同理也可以推理出上一個小時為:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S" --date=-1hour 2020-09-16 19:15:00

上一分鐘為:

[root@hadoop-master ~]# date +"%Y-%m-%d %H:%M:%S" --date=-1minute 2020-09-16 20:14:34

同理獲取上一年,上一月,上一天,上一小時,上一分鐘,上一秒,不多擴展了。

2.2.3、獲取明天的日期

根據上面的我們很容易推測出明天的日期計算方式:
方式一:

[root@hadoop-master ~]# date +%Y%m%d --date=tomorrow 20200917

方式二:

[root@hadoop-master ~]# date +%Y%m%d --date=+1day 20200917

方式三:

[root@hadoop-master ~]# date +%Y%m%d --date="+1 day" 20200917

同理可以推測出17天后是:

[root@hadoop-master ~]# date +%Y%m%d --date="+17 day" 20201003

2.3、獲取當前時間戳

注意一下的是自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數,如果是使用更精確的時間戳則不能使用這個

[root@hadoop-master ~]# date +%s 1600258838

下面是獲取當前時間的納秒數,精確到億分之一秒,這個是秒后面的值

[root@hadoop-master ~]# date +%N 713781544

獲取當前時間的毫秒數

[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000)) 1600259292777

不過這個有個缺陷會報錯:

[root@hadoop-master ~]# echo $((`date '+%s'`*1000+`date '+%N'`/1000000)) -bash: 1600259263*1000+097437620: 數值太大不可為算數進制的基 (錯誤符號是 "097437620"

2.4、將指定時間字符串轉成日期格式

把字符串轉成時間戳

[root@hadoop-master ~]# date +%s --date="2020-09-16" 1600185600

把時間戳轉成時間

[root@hadoop-master ~]# date -d @1600185600 "+%Y-%m-%d" 2020-09-16

2.5、獲取指定日期前1天的日期

方式一:

[root@hadoop-master ~]# date -d "20210221 1 day ago" +%Y-%m-%d 2021-02-20

方式二:

[root@hadoop-master ~]# date -d "20210221 -1 day" +%Y-%m-%d 2021-02-20

方式三:

[root@hadoop-master ~]# date -d "20210221 -1day" +%Y-%m-%d 2021-02-20

方式四:

[root@hadoop-master ~]# date -d "20210221 yesterday" +%Y-%m-%d 2021-02-20

方式五:

[root@hadoop-master ~]# date -d "20210221" --date="-1 day" +%Y-%m-%d 2021-02-20

方式六:

[root@hadoop-master ~]# date -d "20210221 last day" +%Y-%m-%d 2021-02-20

根據上面可以類推指定日期前3天的日期為

[root@hadoop-master ~]# date -d "20210221 3 day ago" +%Y-%m-%d 2021-02-18

2.6、獲取指定日期后1天的日期

方式一:

[root@hadoop-master ~]# date -d "20210221 +1 day" +%Y-%m-%d 2021-02-22

方式二:

[root@hadoop-master ~]# date -d "20210221 1 day" +%Y-%m-%d 2021-02-22

方式三:

[root@hadoop-master ~]# date -d "20210221 1day" +%Y-%m-%d 2021-02-22

方式四:

[root@hadoop-master ~]# date -d "20210221" --date="+1 day" +%Y-%m-%d 2021-02-22

根據上面可以類推指定日期后3天的日期為

[root@hadoop-master ~]# date -d "20210221 +3 day" +%Y-%m-%d 2021-02-24

2.7、獲取指定日期上1個月的第一天

注意每一個月的天數可能不一樣,取當前日期月份1號來獲取上一個月的月份。
示例:獲取20210221的上一個月的月份
方式一:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1 month" +%Y-%m-01 2021-01-01

方式二:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` last month" +%Y-%m-01 2021-01-01

2.8、獲取指定日期上1個月的最后一天

方式一:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1 day" +%Y-%m-%d 2021-01-31

方式二:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` -1day" +%Y-%m-%d 2021-01-31

方式三:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` yesterday" +%Y-%m-%d 2021-01-31

方式四:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` 1 day ago" +%Y-%m-%d 2021-01-31

方式五:

[root@hadoop-master ~]# date -d "`date -d "20210221" +%Y%m01` last day" +%Y-%m-%d 2021-01-31

總結

以上是生活随笔為你收集整理的每天学一点儿shell:linux中时间函数的date的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。