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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

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

發(fā)布時(shí)間:2025/3/19 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天学一点儿shell:linux中时间函数的date的用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1、linux中date函數(shù)格式
  • 2、date日期函數(shù)的具體用法
    • 2.1、獲取相應(yīng)格式的日期
    • 2.2、獲取相隔時(shí)間段的日期
      • 2.2.1、獲取今天的日期
      • 2.2.2、獲取昨天的日期
      • 2.2.3、獲取明天的日期
    • 2.3、獲取當(dāng)前時(shí)間戳
    • 2.4、將指定時(shí)間字符串轉(zhuǎn)成日期格式
    • 2.5、獲取指定日期前1天的日期
    • 2.6、獲取指定日期后1天的日期
    • 2.7、獲取指定日期上1個(gè)月的第一天
    • 2.8、獲取指定日期上1個(gè)月的最后一天

1、linux中date函數(shù)格式

首先date函數(shù)的使用格式如下:

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

其中的格式解釋所示:

符號(hào)解釋
%%一個(gè)文字的 %
%a當(dāng)前l(fā)ocale 的星期名縮寫(xiě)(例如: 日,代表星期日)
%A當(dāng)前l(fā)ocale 的星期名全稱(chēng) (如:星期日)
%b當(dāng)前l(fā)ocale 的月名縮寫(xiě) (如:一,代表一月)
%B當(dāng)前l(fā)ocale 的月名全稱(chēng) (如:一月)
%c當(dāng)前l(fā)ocale 的日期和時(shí)間 (如:2005年3月3日 星期四 23:05:25)
%C世紀(jì);比如 %Y,通常為省略當(dāng)前年份的后兩位數(shù)字(例如:20)
%d按月計(jì)的日期(例如:01)
%D按月計(jì)的日期;等于%m/%d/%y
%e按月計(jì)的日期,添加空格,等于%_d
%F完整日期格式,等價(jià)于 %Y-%m-%d
%gISO-8601 格式年份的最后兩位 (參見(jiàn)%G)
%GISO-8601 格式年份 (參見(jiàn)%V),一般只和 %V 結(jié)合使用
%h等于%b
%H小時(shí)(00-23)
%I小時(shí)(00-12)
%j按年計(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當(dāng)前l(fā)ocale 下的"上午"或者"下午",未知時(shí)輸出為空
%P與%p 類(lèi)似,但是輸出小寫(xiě)字母
%r當(dāng)前l(fā)ocale 下的 12 小時(shí)時(shí)鐘時(shí)間 (如:11:11:04 下午)
%R24 小時(shí)時(shí)間的時(shí)和分,等價(jià)于 %H:%M
%s自UTC 時(shí)間 1970-01-01 00:00:00 以來(lái)所經(jīng)過(guò)的秒數(shù)
%S秒(00-60)
%t輸出制表符 Tab
%T時(shí)間,等于%H:%M:%S
%u星期,1 代表星期一
%U一年中的第幾周,以周日為每星期第一天(00-53)
%VISO-8601 格式規(guī)范下的一年中第幾周,以周一為每星期第一天(01-53)
%w一星期中的第幾日(0-6),0 代表周一
%W一年中的第幾周,以周一為每星期第一天(00-53)
%x當(dāng)前l(fā)ocale 下的日期描述 (如:12/31/99)
%X當(dāng)前l(fā)ocale 下的時(shí)間描述 (如:23:13:48)
%y年份最后兩位數(shù)位 (00-99)
%Y年份
%Z按字母表排序的時(shí)區(qū)縮寫(xiě) (例如,EDT)

2、date日期函數(shù)的具體用法

2.1、獲取相應(yīng)格式的日期

輸出日期格式為yyyy-MM-dd HH:mm:ss的時(shí)間,以當(dāng)前日期時(shí)間為例:

方式一:

[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

舉個(gè)其他數(shù)據(jù)格式的例子,例如輸出格式為yyyMMddHHmmss格式

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

2.2、獲取相隔時(shí)間段的日期

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

根據(jù)以上的表達(dá)式我們推測(cè)出17天前的日期為:

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

同理也可以推理出上一個(gè)小時(shí)為:

[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

同理獲取上一年,上一月,上一天,上一小時(shí),上一分鐘,上一秒,不多擴(kuò)展了。

2.2.3、獲取明天的日期

根據(jù)上面的我們很容易推測(cè)出明天的日期計(jì)算方式:
方式一:

[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

同理可以推測(cè)出17天后是:

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

2.3、獲取當(dāng)前時(shí)間戳

注意一下的是自UTC 時(shí)間 1970-01-01 00:00:00 以來(lái)所經(jīng)過(guò)的秒數(shù),如果是使用更精確的時(shí)間戳則不能使用這個(gè)

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

下面是獲取當(dāng)前時(shí)間的納秒數(shù),精確到億分之一秒,這個(gè)是秒后面的值

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

獲取當(dāng)前時(shí)間的毫秒數(shù)

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

不過(guò)這個(gè)有個(gè)缺陷會(huì)報(bào)錯(cuò):

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

2.4、將指定時(shí)間字符串轉(zhuǎn)成日期格式

把字符串轉(zhuǎn)成時(shí)間戳

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

把時(shí)間戳轉(zhuǎn)成時(shí)間

[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

根據(jù)上面可以類(lèi)推指定日期前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

根據(jù)上面可以類(lèi)推指定日期后3天的日期為

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

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

注意每一個(gè)月的天數(shù)可能不一樣,取當(dāng)前日期月份1號(hào)來(lái)獲取上一個(gè)月的月份。
示例:獲取20210221的上一個(gè)月的月份
方式一:

[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個(gè)月的最后一天

方式一:

[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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。