Linux shell編程學習筆記56:date命令——顯示或設置系統時間與日期

0 前言


2024年的網絡安全檢查又開始了,對于使用基于Linux的國產電腦,我們可以編寫一個腳本來收集系統的有關信息。在收集的信息中,應該有一條是搜索信息的時間。

1. date命令 的功能、格式和選項說明

我們可以使用命令 date?--help 來查看 date命令的幫助信息。

[purpleendurer @ bash ~ ]date --help
Usage: date [OPTION]... [+FORMAT]or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.Mandatory arguments to long options are mandatory for short options too.-d, --date=STRING         display time described by STRING, not 'now'-f, --file=DATEFILE       like --date once for each line of DATEFILE-I[TIMESPEC], --iso-8601[=TIMESPEC]  output date/time in ISO 8601 format.TIMESPEC='date' for date only (the default),'hours', 'minutes', 'seconds', or 'ns' for dateand time to the indicated precision.-r, --reference=FILE      display the last modification time of FILE-R, --rfc-2822            output date and time in RFC 2822 format.Example: Mon, 07 Aug 2006 12:34:56 -0600--rfc-3339=TIMESPEC   output date and time in RFC 3339 format.TIMESPEC='date', 'seconds', or 'ns' fordate and time to the indicated precision.Date and time components are separated bya single space: 2006-08-07 12:34:56-06:00-s, --set=STRING          set time described by STRING-u, --utc, --universal    print or set Coordinated Universal Time (UTC)--help     display this help and exit--version  output version information and exitFORMAT controls the output.  Interpreted sequences are:%%   a literal %%a   locale's abbreviated weekday name (e.g., Sun)%A   locale's full weekday name (e.g., Sunday)%b   locale's abbreviated month name (e.g., Jan)%B   locale's full month name (e.g., January)%c   locale's date and time (e.g., Thu Mar  3 23:05:25 2005)%C   century; like %Y, except omit last two digits (e.g., 20)%d   day of month (e.g., 01)%D   date; same as %m/%d/%y%e   day of month, space padded; same as %_d%F   full date; same as %Y-%m-%d%g   last two digits of year of ISO week number (see %G)%G   year of ISO week number (see %V); normally useful only with %V%h   same as %b%H   hour (00..23)%I   hour (01..12)%j   day of year (001..366)%k   hour, space padded ( 0..23); same as %_H%l   hour, space padded ( 1..12); same as %_I%m   month (01..12)%M   minute (00..59)%n   a newline%N   nanoseconds (000000000..999999999)%p   locale's equivalent of either AM or PM; blank if not known%P   like %p, but lower case%r   locale's 12-hour clock time (e.g., 11:11:04 PM)%R   24-hour hour and minute; same as %H:%M%s   seconds since 1970-01-01 00:00:00 UTC%S   second (00..60)%t   a tab%T   time; same as %H:%M:%S%u   day of week (1..7); 1 is Monday%U   week number of year, with Sunday as first day of week (00..53)%V   ISO week number, with Monday as first day of week (01..53)%w   day of week (0..6); 0 is Sunday%W   week number of year, with Monday as first day of week (00..53)%x   locale's date representation (e.g., 12/31/99)%X   locale's time representation (e.g., 23:13:48)%y   last two digits of year (00..99)%Y   year%z   +hhmm numeric time zone (e.g., -0400)%:z  +hh:mm numeric time zone (e.g., -04:00)%::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)%:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)%Z   alphabetic time zone abbreviation (e.g., EDT)By default, date pads numeric fields with zeroes.
The following optional flags may follow '%':-  (hyphen) do not pad the field_  (underscore) pad with spaces0  (zero) pad with zeros^  use upper case if possible#  use opposite case if possibleAfter any flags comes an optional field width, as a decimal number;
then an optional modifier, which is either
E to use the locale's alternate representations if available, or
O to use the locale's alternate numeric symbols if available.Examples:
Convert seconds since the epoch (1970-01-01 UTC) to a date$ date --date='@2147483647'Show the time on the west coast of the US (use tzselect(1) to find TZ)$ TZ='America/Los_Angeles' dateShow the local time for 9AM next Friday on the west coast of the US$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report date translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'date invocation'
[purpleendurer @ bash ~ ]

1.1 date 命令的功能

顯示或設置系統時間與日期。

轉換時間到選定的格式,默認為當前。

1.2 date 命令的格式

date [OPTION]... [+FORMAT]

date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

1.3? FORMAT可用的轉義序列

轉義序列含義
%%百分號
%a當地縮寫的工作日名稱(例如,Sun)
%A當地完整的工作日名稱(例如,Sunday)
%b當地縮寫的月份名稱(例如,Jan)
%B當地完整的月份名稱(例如,January)
%c當地的日期和時間(例如,Thu Mar 3 23:05:25 2005)
%C世紀,和%Y類似,但是省略后兩位(例如,20)
%d一月中的一天(例如,01)
%D日期,等價于%m/%d/%y
%e一月中的一天,格式使用空格填充,等價于%_d
%F完整的日期;等價于%+4Y-%m-%d
%gISO標準計數周的年份的最后兩位數字
%GISO標準計數周的年份,通常只對%V有用
%h等價于%b
%H小時,范圍(00..23)
%I小時,范圍(01..12)
%j一年中的一天,范圍(001..366)
%k小時,使用空格填充,范圍(0..23),等價于%_H
%l小時,使用空格填充,范圍(1..12),等價于%_I
%m月,范圍(01..12)
%M分鐘,范圍(00..59)
%n換行符
%N納秒,范圍(000000000..000000000)
%p用于表示當地的AM或PM,如果未知則為空白
%P類似于%p,但用小寫表示
%q季度,范圍(1..4)
%r當地以12小時表示的時鐘時間(例如,11:11:04 PM)
%R24小時每分鐘;等價于%H:%M
%s自協調世界時1970年01月01日00時00分以來的秒數
%S秒數,范圍(00..60)
%t水平制表符
%T時間;等價于%H:%M:%S
%u一周中的一天(1..7),1代表星期一
%U一年中的第幾周,周日作為一周的起始(00..53)
%VISO標準計數周,該方法將周一作為一周的起始(01..53)
%w一周中的一天(0..6),0代表星期天
%W一年中的第幾周,周一作為一周的起始(00..53)
%x當地的日期表示(例如,12/31/99)
%X當地的時間表示(例如,23:13:48)
%y年份后兩位數字,范圍(00..99)
%Y年份
%z+hhmm格式的數值化時區格式(例如,-0400)
%:z+hh:mm格式的數值化時區格式(例如,-04:00)
%::z+hh:mm:ss格式的數值化時區格式(例如,-04:00:00)
%:::z數值化時區格式,相比上一個格式增加':'以顯示必要的精度(例如,-04,+05:30)
%Z時區縮寫(如EDT)

1.4?date 命令的選項說明

選項說明

-d STRING

--date=STRING

--date STRING

解析字符串并按照指定格式輸出,字符串不能是'now'。

-f?DATEFILE

--file=DATEFILE

類似于--date; 一次從DATEFILE處理一行。
-I[FMT], --iso-8601[=FMT]

按照ISO 8601格式輸出

FMT可以為'date'(默認),'hours','minutes','seconds','ns'。

例如:2006-08-14T02:34:56-06:00

-R

--rfc-email

按照RFC 5322格式輸出,

例如: Mon, 14 Aug 2006 02:34:56 -0600

--rfc-3339=FMT按照RFC 3339格式輸出,FMT可以為'date', 'seconds','ns'中的一個,例如:2006-08-14 02:34:56-06:00
-r, --reference=FILE顯示文件的上次修改時間。

-s

--set=STRING

根據字符串設置系統時間。

-u

--utc

--universal

顯示或設置世界協調時(UTC)。
--help顯示幫助信息并退出。
--version顯示版本信息并退出。

2 date命令實例

2.1 date : 顯示當前系統日期和時間

[purpleendurer @ bash ~ ]date
2024年 06月 02日 星期日 17:18:03 CST
[purpleendurer @ bash ~ ]

2.2 date +格式化字符串:格式化輸出

?

[purpleendurer @ bash ~ ]date
2024年 06月 02日 星期日 17:53:04 CST
[purpleendurer @ bash ~ ]date +"%Y-%m-%d %l:%M:%S %A"
2024-06-02  5:53:05 星期日
[purpleendurer @ bash ~ ]

?

?

2.3?date -d 字符串 或 date --date=字符串 或 date --date 字符串:解析字符串并按照指定格式輸出

[purpleendurer @ bash ~ ]date -d="2000-01-01"
date: invalid date ‘=2000-01-01’
[purpleendurer @ bash ~ ]date -d="20000101"
date: invalid date ‘=20000101’
[purpleendurer @ bash ~ ]date -d "20000101"
2000年 01月 01日 星期六 00:00:00 CST
[purpleendurer @ bash ~ ]date -d "2000-01-01"
2000年 01月 01日 星期六 00:00:00 CST
[purpleendurer @ bash ~ ]date --date="2000-01-01"
2000年 01月 01日 星期六 00:00:00 CST
[purpleendurer @ bash ~ ]date --date "2000-01-01"
2000年 01月 01日 星期六 00:00:00 CST
[purpleendurer @ bash ~ ]

2.4?date -I :按照ISO 8601格式輸出

[purpleendurer @ bash ~ ]date
2024年 06月 02日 星期日 18:16:22 CST
[purpleendurer @ bash ~ ]date -I
2024-06-02
[purpleendurer @ bash ~ ]

?

2.5 date -d "3 day ago" :輸出3天前的日期

[purpleendurer @ bash ~ ]date -d "3 day ago" +"%c" # 輸出3天前的日期
2024年05月30日 星期四 18時15分13秒
[purpleendurer @ bash ~ ]

?

2.6 date -d "3 month ago" -R?:按照RFC 5322格式輸出3個月前的日期

[purpleendurer @ bash ~ ]date
2024年 06月 02日 星期日 18:14:08 CST
[purpleendurer @ bash ~ ]date -d "3 month ago" -R # 按照RFC 5322格式輸出3個月前的日期
Sat, 02 Mar 2024 18:14:21 +0800
[purpleendurer @ bash ~ ]

2.7? date -d 字符串:解析字符串并輸出

?

purpleendurer @ bash ~ ]date -d "19880907" +"%c" # 解析字符串"19880907"按照當地格式輸出
1988年09月07日 星期三 00時00分00秒
[purpleendurer @ bash ~ ]

?2.8?顯示兩年后的日期

[purpleendurer @ bash ~ ]date
2024年 06月 02日 星期日 18:26:35 CST
[purpleendurer @ bash ~ ]date -d "+2 year" +%Y-%m-%d      # 顯示兩年后的日期
2026-06-02
[purpleendurer @ bash ~ ]

?2.9 生成日志的時間

[purpleendurer @ bash ~ ]date +"日志生成時間:%c"
日志生成時間:2024年06月02日 星期日 18時30分01秒
[purpleendurer @ bash ~ ]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21780.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 虛擬環境安裝及python包庫安裝

python 虛擬環境安裝及python包庫安裝 安裝虛擬環境的方式注意事項 安裝虛擬環境的方式 切記盡量不要混用 pip 安裝 對于pip安裝&#xff0c;使用命令如下 下載virtualenv 工具 pip install virtualenv 創建虛擬環境并激活環境virtualenv venv source ./venv/bin/activate co…

Kafka之Broker原理

1. 日志數據的存儲 1.1 Partition 1. 為了實現橫向擴展&#xff0c;把不同的數據存放在不同的 Broker 上&#xff0c;同時降低單臺服務器的訪問壓力&#xff0c;我們把一個Topic 中的數據分隔成多個 Partition 2. 每個 Partition 中的消息是有序的&#xff0c;順序寫入&#x…

LeetCode刷題:反轉鏈表

leetCode真題 206. 反轉鏈表 屬于基礎簡單題目 常見的做法有遞歸和while循環 遞歸 // 1. 遞歸參數和返回值public static ListNode reverseList(ListNode head) {// 1. 遞歸終止條件if (head null || head.next null) {return head;}// 遞歸邏輯ListNode last reverseL…

達夢數據庫相關SQL及適配Mysql配置總結

&#x1f353; 簡介&#xff1a;java系列技術分享(&#x1f449;持續更新中…&#x1f525;) &#x1f353; 初衷:一起學習、一起進步、堅持不懈 &#x1f353; 如果文章內容有誤與您的想法不一致,歡迎大家在評論區指正&#x1f64f; &#x1f353; 希望這篇文章對你有所幫助,歡…

解決Python導入第三方模塊報錯“TypeError: the first argument must be callable”

注意以下內容只對導包時遇到同樣的報錯會有參考價值。 問題描述 當你嘗試導入第三方模塊時&#xff0c;可能會遇到如下報錯信息&#xff1a; TypeError: the first argument must be callable 猜測原因 經過仔細檢查代碼&#xff0c;我猜測這個錯誤的原因是由于變量名沖突所…

Windows 系統安裝 VisualSVN Server

一.下載 VisualSVN Server VisualSVN-Server 是 SVN 版本控制中服務器端要使用的軟件,就是我們提交代碼存在安裝這個軟件的電腦上,它將很多配置和服務直接幫你完成,簡單好用容易上手。VisualSVN Server有三個版本,社區版免費但限15個用戶,另有一般和‘企業’兩個收費版本…

如何卸載ollama

文章目錄 一 概述二 卸載2.1 Windows平臺卸載 ollama2.2 Linux 平臺卸載 ollama2.3 Docker 平臺卸載 ollama 參考鏈接 一 概述 本文檔主要講述 ollama 如何卸載&#xff0c;適用范圍包括 Windows Linux 以及 Docker 等平臺的安裝方式。 二 卸載 2.1 Windows平臺卸載 ollama …

學習C++應該做點什么項目

C作為一門底層可操作性很強的語言&#xff0c;廣泛應用于游戲開發、工業和追求性能、速度的應用。 比如騰訊&#xff0c;無論游戲&#xff0c;還是微信&#xff0c;整個鵝廠后臺幾乎都是 C 開發&#xff0c;對 C 開發者的需求非常大。 但問題是C入門和精通都比較困難&#xf…

有哪些掙錢軟件一天能賺幾十元?盤點十個能長期做下去的掙錢軟件

在這個信息爆炸的時代&#xff0c;每個人都在尋找快速賺錢的秘訣。很多人做兼職副業的目標并不是獲得很大的成功&#xff0c;大部分人一天能賺幾十就心滿意足了。 今天&#xff0c;我要帶你一探究竟&#xff0c;揭秘那些能讓你日賺幾十元的掙錢軟件。準備好了嗎&#xff1f;讓我…

單槍匹馬月入17萬美元:數字游民Pieter Levels如何成就商業傳奇

了解數字游民的應該都聽說過 Pieter Levels&#xff0c;可以說他是數字游民的先驅人物。 他在推特上擁有超過43萬的粉絲&#xff0c;僅憑一臺筆記本電腦就連續建立了多個高盈利網站&#xff0c;光是推特主頁上展示的比較新的幾個網站&#xff0c;每月收入加起來就高達 17.6 萬…

第九周:員工激勵理論

1. 關注自己到關注他人 你是激勵者&#xff0c;也會是被激勵者。 雖然每個人的價值觀不一樣&#xff0c;但要做好激勵員工這件事情&#xff0c;我覺得可以從自身角度出發&#xff0c;可以問問自己&#xff0c;你是如何被激勵的&#xff1f; 如果是我&#xff0c;就只想要錢&…

如何實現區域公司和專業公司合理有效的銜接?

對于集團公司來說&#xff0c;各區域公司、專業公司的管理問題成為困擾管理者的難題。特別是在信息壁壘比較嚴重的情況下&#xff0c;各個單位往往各自為政、自行其是&#xff0c;缺乏有效的溝通和協作&#xff0c;導致整體管理效率低下。那么應該如何實現區域公司和專業公司合…

Vulnhub項目:THE PLANETS: MERCURY

1、靶場地址 The Planets: Mercury ~ VulnHubThe Planets: Mercury, made by SirFlash. Download & walkthrough links are available.https://vulnhub.com/entry/the-planets-mercury,544/ 這好像是個系列的&#xff0c;關于星球系列&#xff0c;之前還做過一個地球的&a…

滑動窗口最大值-力扣

在做這道題時&#xff0c;首先想到的解法是使用隊列來做&#xff0c;維護一個隊列&#xff0c;每次保存滑動窗口大小的長度&#xff0c;并判斷此時隊列中的最大值&#xff0c;但這樣做&#xff0c;在k的值較大時&#xff0c;出現了超時問題&#xff0c;代碼如下&#xff1a; c…

STM32-15-DMA

STM32-01-認識單片機 STM32-02-基礎知識 STM32-03-HAL庫 STM32-04-時鐘樹 STM32-05-SYSTEM文件夾 STM32-06-GPIO STM32-07-外部中斷 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定時器 STM32-11-電容觸摸按鍵 STM32-12-OLED模塊 STM32-13-MPU STM32-14-FSMC_LCD 文章目錄 STM…

[原創][Delphi多線程]TThreadedQueue的經典使用案例.

[簡介] 常用網名: 豬頭三 出生日期: 1981.XX.XX QQ: 643439947 個人網站: 80x86匯編小站 https://www.x86asm.org 編程生涯: 2001年~至今[共22年] 職業生涯: 20年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delph…

悉數六大設計原則

悉數六大設計原則 目錄 悉數六大設計原則前言?誰發明了設計模式設計原則設計原則與設計模式的關系 單一職責什么是單一職責不遵循單一職責原則的設計遵循單一職責原則的設計單一職責的優點示例代碼&#xff1a; 里氏替換原則什么是里氏替換原則示例代碼&#xff1a;違反里氏替…

解讀信創產業根基,操作系統發展歷程

信創產業根基之一操作系統 操作系統是一個關鍵的控制程序&#xff0c;負責協調、管理和控制計算機硬件和軟件資源。作為硬件的首要軟件擴展&#xff0c;它位于裸機與用戶之間&#xff0c;充當了兩者之間的橋梁。通過其核心程序&#xff0c;操作系統高效地管理著系統中的各類資源…

static修飾變量和函數

static修飾的變量和函數只能在定義它的cpp源文件中使用&#xff0c;如果在頭文件中定義&#xff0c;則需要注意 在頭文件中定義static變量和static函數&#xff1a; 變量 如果在頭文件中定義了static變量&#xff0c;那么&#xff0c;所有包含這個頭文件的源文件都會定義自己…

vm-bhyve虛擬機安裝ubuntu22版本后進入grub無法啟動

問題&#xff1a;安裝ubuntu22版本后無法啟動 安裝好ubuntu22之后&#xff0c;重啟進入了grub模式&#xff0c;沒有自動啟動ubuntu 網上查了一下&#xff0c;這算一個通病。 問題解決 在grub模式下輸入boot命令&#xff1a; boot (lvm/ubuntu--vg-ubuntu--lv)/boot error: …