天天看點

linux date指令日期時間輸出格式

在使用date指令輸出日期時間時,通過格式字元串可以指定日期時間的格式。根據格式字元串中格式說明符的作用可分為以下幾類。

日期轉換說明符

%a:目前區域設定下星期的縮寫,如“Sun”、“Mon”。

%A:目前區域設定下星期的全拼,如“Sunday”、“Monday”。

%b:目前區域設定下月份的縮寫,如“Jan”、“Feb”。

%B:目前區域設定下月份的全拼,如“January”、“February”。

%c:目前區域設定下的日期和時間,如“Sat 19 Jan 2019 05:51:45 PM CST”。

%C:世紀,類似%Y,隻是最後兩個數字被省略了,如%Y為2019,則%C為20。

%d:一月中的那一天,如“19”、“05”。

%D:日期,等效于“%m/%d/%y”(美國格式),如“01/19/19”。

%e:一月中的那一天,空格填充,等效于“%_d”,如“19”、“ 5”。

%F:ISO 8601格式的完整日期,等效于“%Y-%m-%d”,如“2019-01-19”。對于日期格式,這是一個很好的選擇,因為它是标準的,并且在年份範圍為0000…9999的通常情況下很容易排序。

%g:ISO周數對應的不包含世紀的年份(00-99),等效于“%y”,除非ISO周數屬于前一年或後一年,則使用前一年或後一年。

%G:ISO周數對應的年份(0000-9999),等效于“%Y”,除非ISO周數屬于前一年或後一年,則使用前一年或後一年。格式“%G-%m-%d”有可能是錯誤的,因為它将ISO周數的年與傳統的月和日結合在了一起。

%h:等效于“%b”。

%j:一年中的天數(001-366)。

%m:月份(01-12)。

%u:星期的天數(1-7),1是周一。

%U:周數(00-53), 周日為一周的第一天。新年第一個星期日之前的幾天是第零周。

%V:ISO周數(01-53),周一為一周的第一天。如果包含1月1日的一周在新的一年裡有四天或四天以上,則認為這周是第一周,否則就是前一年的第53周,下一周是新年的第一周。

%w:星期的天數(0-6),0是周日。

%W:周數(00-53),周一為一周的第一天。新年第一個星期一之前的幾天是第零周。

%x(小寫):按目前區域設定下的日期格式,如“01/19/2019”。

%y:年份的後兩位(00-99)。

%Y:年份。

時間轉換說明符

%H:時(00-23)。

%I(大寫i):時(01-12)。

%k:時,空格填充( 0-23),等效于“%_H”,是GNU擴充。

%l(小寫l):時,空格填充( 0-12),等效于“%_I”,是GNU擴充。

%M:分(00-59)。

%N:納秒(000000000-999999999),是GNU擴充。

%p:本地區域設定下等價于“AM”或“PM”,在許多地區是空字元串。中午視為“PM”,午夜視為“AM”。

%P:與%p一樣,隻不過是小寫的,是GNU擴充。

%r:本地區域設定下12小時制時間,如11:11:20 PM。

%R:24小時制的時和分,等效于“%H%M”,如“23:12”。

%s:從UTC時間紀元起的秒數,除非有閏秒支援,否則不計算閏秒,是GNU擴充。

%S:秒(00-60),如果支援閏秒則可能為60。

%T:24小時制的時分秒,等效于“%H:%M:%S”。

%X:(大寫):按目前區域設定下的日期格式,如“10:53:24 PM”。

%z(小寫):四位數字表示的時區,如“+0800”。如果時區不确定則為“-0000”。此值為使用TZ環境變量指定的時區規則。時區規則可以被-d(--date)選項覆寫。

%:z(小寫):帶“:”的數字時區。如“+08:00”。如果時區不确定則為“-00:00”,是GNU擴充。

%::z(小寫):帶“:”的精确到秒的數字時區。如“+08:00:00”。如果時區不确定則為“-00:00:00”,是GNU擴充。

%:::z(小寫):帶“:”的使用最小必要精度的時區。如“+08”、“+08:30:20”。如果時區不确定則為“-00”,是GNU擴充。

%Z(大寫):按字母順序排列的時區縮寫。如“CST”。如果時區不确定則傳回空字元串。

文字轉換說明符

%%:字元“%”。

%n:換行符。

%t:制表符。

填充标記說明符

除非另外指定否則,date通常用0填充數字,比如數字月份總是輸出兩個數字。做為GNU擴充,date可以識别“%”後面的以下标記:

-(連字号):不進行填充。

_(下劃線):填充空格。

0:填充0。

^:如果可能的話,使用大寫字元。

#:如果可能的話,使用大小寫相反的字元(大寫變小寫,小寫變大寫)。

可以在任意标記之後說明符之前加上一個數字來指定域的寬度,如果輸出域的自然長度小于指定的域寬度,會自動填充左側到指定長度。比如“%10a”,輸出為“       Mon”,長度為10,左側被空格填充。通常在不指定填充符的情況下,如果輸出格式為純數字會用0填充,如果包含非數字字元,則用空格填充。數字時區例外,數字時區中雖然包含“+”、“-”或“:”,但依然會用0填充,且是填充在“+”、“-”号之後。

此外,在标記和寬度後面可以跟一個可選修飾符,修飾符有兩個:

E:如果可以,使用本地區域設定下的替代表示。此修飾符适用于轉換修飾符“%c”、“%c”、“%x”、“%x”、“%y”和“%y”。

O:如果可以,使用本地區域設定下的數字元号。此修飾符适用于數值的轉換修飾符。

如果格式支援修飾符,但是沒有可替代的表示,則會忽略修飾符。

繼續閱讀