Linux常用基础指令-date指令

news/2024/12/14 11:57:22/

1.date 命令概述

date 命令用于打印或设置系统的日期和时间,能够显示当前时间,支持多种时间格式的自定义输出,可以设置系统时间(需要管理员权限)。

1.1.基本语法

date [选项]... [+格式]
date [选项] [MMDDhhmm[[CC]YY][.ss]]
  • 显示当前时间:直接输入 date 即可显示当前的系统时间。
  • 设置系统时间:通过 [MMDDhhmm[[CC]YY][.ss]] 格式可以设置具体的日期和时间。

1.2.date 命令的常用选项

以下是一些常用选项和参数,可以大大提高 date 命令的灵活性和实用性:

选项功能描述
-d, --date=STRING显示由 STRING 指定的时间,而不是当前时间。例如:date -d "next Monday"
-f, --file=DATEFILE针对 DATEFILE 文件中的每一行内容,逐行显示对应的时间(等价于多次 --date 的调用)。
-I, --iso-8601[=TIMESPEC]以 ISO-8601 格式输出时间,TIMESPEC 可选值:date(默认)、hoursminutesseconds
-r, --reference=文件显示指定文件的最后修改时间。例如:date -r /etc/passwd
-R, --rfc-822按 RFC-822 格式显示日期(如:Mon, 07 Aug 2006 12:34:56 -0600)。
-s, --set=STRING根据 STRING 设置系统时间(需要管理员权限)。例如:date -s "2024-12-01 12:00:00"
-u, --utc, --universal以 UTC(协调世界时)显示或设置时间。
--help显示帮助信息并退出。
--version显示版本信息并退出。

1.3.时间格式化:灵活控制输出

date 命令支持通过格式符号自定义时间和日期的输出。以下是一些常见的格式符号及其用途:

格式符号描述示例输出
%%字面上的 %%
%Y年份(四位数)2024
%m月份(两位数)11
%d日期(两位数)28
%H小时(24 小时制,两位数)14
%M分钟(两位数)30
%S秒(两位数)45
%F完整日期(等价于 %Y-%m-%d2024-11-28
%T完整时间(等价于 %H:%M:%S14:30:45
%a星期的简写Thu(周四)
%A星期的全称Thursday
%z时区偏移量+0800
%Z时区名称CST(北京时间)

2.使用示例

  1. 显示当前时间
date
  1. 自定义格式输出
date +"今天是:%Y年%m月%d日 %H:%M:%S"
  1. 显示未来日期
date -d "7 days"
  1. 从文件中读取每一行的日期字符串,解析为日期
2024-11-28
+7 days
next Monday
date -f date.txt

输出:

20241128日 星期四 00:00:00 CST
202412月 05日 星期四 13:57:41 CST
202412月 02日 星期一 00:00:00 CST
  1. 转换 Unix 时间戳
date -d "@2147483647"
  1. 查看文件的最后修改时间
date -r /var/log/syslog
  1. 时区设置
    通过环境变量 TZ 设置时区:
TZ='America/New_York' date

输出纽约时间。

  1. 脚本中的日期标签

在脚本中生成带时间戳的文件名:

filename="backup_$(date +'%Y%m%d_%H%M%S').tar.gz"

生成结果:backup_20241128_143045.tar.gz

  1. 设置系统时间

需要管理员权限:

sudo date -s "2024-12-01 12:00:00"

3.date -d 选项格式

3.1. 具体日期格式

date -d 支持多种标准日期格式:

格式示例描述
YYYY-MM-DD2024-11-28年-月-日,ISO 8601 格式(推荐)。
MM/DD/YYYY11/28/2024月/日/年,常见的美式格式。
YYYYMMDD20241128紧凑格式,无分隔符。
Month DD, YYYYNovember 28, 2024月份全称(或简写)+ 日 + 年。
DD Month YYYY28 November 2024日 + 月份全称(或简写)+ 年。
date -d "2024-11-28"
date -d "11/28/2024"
date -d "November 28, 2024"

3.2. 时间格式

date -d 可以指定具体的时间,支持 24 小时制或 12 小时制。

格式示例描述
HH:MM14:3024 小时制,小时和分钟。
HH:MM:SS14:30:4524 小时制,小时、分钟和秒。
HH:MM:SS AM/PM02:30:45 PM12 小时制,带 AM/PM 标识。
date -d "2024-11-28 14:30"
date -d "11/28/2024 02:30:45 PM"

3.3. 相对时间描述

date -d 支持相对时间描述,允许基于当前时间前后偏移。

描述示例输出示例(假设当前时间为 2024-11-28)
nowdate -d "now"当前时间
tomorrowdate -d "tomorrow"2024-11-29
yesterdaydate -d "yesterday"2024-11-27
+N daysdate -d "+7 days"2024-12-05(7 天后)
-N daysdate -d "-7 days"2024-11-21(7 天前)
+N weeksdate -d "+2 weeks"2024-12-12(2 周后)
-N weeksdate -d "-2 weeks"2024-11-14(2 周前)
+N monthsdate -d "+3 months"2025-02-28(3 个月后)
-N monthsdate -d "-3 months"2024-08-28(3 个月前)
+N yearsdate -d "+1 year"2025-11-28(1 年后)
-N yearsdate -d "-1 year"2023-11-28(1 年前)
date -d "tomorrow"
date -d "+7 days"
date -d "-2 weeks"
date -d "+3 months"

3.4. 复杂的自然语言描述

date -d 支持更复杂的自然语言描述,例如时间点、下一个星期几等。

描述示例输出示例(假设当前时间为 2024-11-28)
next WEEKDAYdate -d "next Friday"2024-11-29(下一个星期五)
last WEEKDAYdate -d "last Monday"2024-11-25(上一个星期一)
WEEKDAYdate -d "Monday"2024-11-25(本周一,如果已过则下周一)
HH:MM next WEEKDAYdate -d "09:00 next Friday"2024-11-29 09:00
date -d "next Friday"
date -d "last Monday"
date -d "09:00 next Friday"

3.5. Unix 时间戳

date -d 支持通过 @TIMESTAMP 格式解析 Unix 时间戳。

格式示例描述
@TIMESTAMPdate -d "@2147483647"将 Unix 时间戳转换为日期时间。
date -d "@2147483647"

3.6. 混合日期和时间格式

可以结合日期和时间描述,加上相对时间偏移。

描述示例输出示例(假设当前时间为 2024-11-28)
YYYY-MM-DD +N daysdate -d "2024-11-01 +7 days"2024-11-08
HH:MM yesterdaydate -d "23:59 yesterday"2024-11-27 23:59
next WEEKDAY +N hoursdate -d "next Friday +12 hours"2024-11-29 12:00
date -d "2024-11-01 +7 days"
date -d "23:59 yesterday"
date -d "next Friday +12 hours"

3.7. ISO 8601 格式

ISO 8601 是国际标准的日期和时间表示法,date -d 支持以下格式:

格式示例描述
YYYY-MM-DDTHH:MM:SSdate -d "2024-11-28T14:30:45"标准 ISO 8601 格式。
YYYY-MM-DDTHH:MM:SSZdate -d "2024-11-28T14:30:45Z"Z 表示 UTC 时间。
date -d "2024-11-28T14:30:45"
date -d "2024-11-28T14:30:45Z"

4.timedatectl工具常用选项和用途

命令/选项用途示例
-h, --help显示帮助信息。timedatectl --help
--version显示 timedatectl 的版本信息。timedatectl --version
--no-pager禁止将输出通过分页器显示(如 less)。timedatectl --no-pager status
--no-ask-password禁止提示输入密码。timedatectl --no-ask-password set-time "2024-12-01 10:00:00"
-H, --host=[USER@]HOST远程操作指定主机的时间设置(需要 ssh权限)。timedatectl --host=root@192.168.1.10 status
-M, --machine=CONTAINER操作本地容器的时间设置。timedatectl --machine=my-container status
--adjust-system-clock更改 RTC 模式时调整系统时钟。timedatectl --adjust-system-clock set-local-rtc 1
status显示当前的时间设置,包括本地时间、UTC 时间、RTC 时间、时区和 NTP 状态。timedatectl status
set-time TIME设置系统时间(需要管理员限)。格式为 YYYY-MM-DD HH:MM:SStimedatectl set-time "2024-12-01 10:00:00"
set-timezone ZONE设置系统时区。时区名称可以通过 list-timezones查看。timedatectl set-timezone Asia/Shanghai
list-timezones列出所有支持的时区名称。timedatectl list-timezones
set-local-rtc BOOL控制硬件时钟(RTC)是否使用本地时间。BOOL0 表示使用 UTC,1 表示使用本地时间。timedatectl set-local-rtc 1
set-ntp BOOL启用或禁用 NTP(网络时间协议)同步。BOOLtrue 表示启用,false 表示禁用。timedatectl set-ntp true

5.**timedatectl**date适用场景对比

功能date 命令timedatectl 工具
显示当前时间✔ 显示当前时间。✔ 显示当前时间、时区、NTP 状态、RTC 配置等。
设置系统时间✔ 支持手动设置时间。✔ 支持手动设置时间。
格式化输出时间✔ 支持多种自定义格式化输出。✘ 不支持格式化输出。
管理时区✘ 不支持时区管理,需要通过环境变量 TZ 实现。✔ 支持列出和设置时区。
NTP 时间同步✘ 不支持 NTP 配置。✔ 支持启用或禁用 NTP。
管理硬件时钟(RTC)✘ 不支持 RTC 配置。✔ 支持配置 RTC 是否使用本地时间或 UTC。
脚本中的临时操作✔ 更适合在脚本中快速处理时间。✘ 不适合脚本中的时间格式化任务。
现代系统集成✘ 仅限于单独运行,功能较简单。✔ 与 systemd 集成,功能全面,适合现代系统。

Ending


http://www.ppmy.cn/news/1551245.html

相关文章

DTC控制,直接转矩控制详解

关于磁链矢量所在扇区及最优开关表的选择的思路分析和matlab/simulink实现 仿真参考袁雷老师的《现代永磁同步电机控制原理及MATLAB仿真》,但是由于书中所附代码和书中第四章中讲的实现不同,因此根据自己看的资料和理解重新整理并实现了一下。 这里采用…

react + vite 中的环境变量怎么获取

一、Vite 环境变量基础 创建一个.env文件,Vite 定义的环境变量需要以VITE_开头。 VITE_API_URL "http://localhost:3000/api" 生产模式创建.env.production。 VITE_API_URL "https://production-api-url.com/api" 二、在 React 组件中获…

工作中Linux 内核的链表算法的使用

在 Linux 内核中,链表是一个非常重要的数据结构,广泛用于各种场景,如任务调度、设备管理、进程管理等。Linux 内核提供了高效且灵活的链表实现,能够更好地管理系统中的数据和对象。我们将深入浅出地讲解 Linux 内核链表的实现原理、用法,并举例展示如何使用。 1. 链表基本…

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024,12月27-29日)

第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 重要信息 会议官网:www.icairc.net 三轮截稿时间:2024年11月30日23:59 录…

Unity中Http框架

Unity中Http框架 介绍框架代码使用方法总结 介绍 最近做了ASP.NET Web应用程序(.Net Framework)的Http服务,所以想也把之前我的Http框架也整理一下发布出来供大家参考。 框架代码 using System; using System.Collections; using System.Collections.Generic; us…

【LeetCode每日一题】——189.轮转数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时空频度】十【代码实现】十一【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 189.轮转数组 四【题目描述】 …

随机变量的线性最小均方估计(LMMSE)——多个观测变量

假设有一个随机变量 x x x需要估计,线性最小均方误差(Linear Minimum Mean Square Error, LMMSE)估计的目标是找到一个线性估计器 x ^ ∑ i 0 N − 1 a i y i b \hat{x} \sum_{i0}^{N-1} a_i y_i b x^∑i0N−1​ai​yi​b,使…

怎样安装和启动Apache HTTP服务器(httpd)和PHP?

安装和启动Apache HTTP服务器(httpd)和PHP需要运行下面的程序: #!/bin/bash yum install -y httpd php systemctl start httpd systemctl enable httpd 其中: #!/bin/bash 表示使用Bash作为脚本的解释器。…