date 命令

用途

显示或者设置日期或时间。

语法

要以 root 用户身份设置日期和时间,请输入:

/usr/bin/date [-n] [-u] [日期] [+FieldDescriptor ...] 

要显示日期和时间,请输入:

/usr/bin/date [-u] [+FieldDescriptor ...]

要以 root 用户身份调整时间(以秒计),请输入:

/usr/bin/date [-a [+ | -] sss [.fff ]

描述

注意: 请勿更改系统与多个用户一起运行的日期。

如果调用时没有标志或标志列表以 + (加号) 开头,那么 date 命令会将当前日期和时间写入标准输出。 否则,它将设置当前的日期。 只有 root 用户能够更改时间和日期。 date 命令会显示有关任何未识别的标志或输入的使用情况消息。

通过 Date 参数设置日期时,可使用下列格式:

  • mmddHHMM[YYYY]
  • mmddHHMM[yy]

Date 参数的变量定义如下所示:

描述
mm 表示月份数。
dd 表示月份中的天数。
HH 通过使用 24 小时制来指定一天中的小时数。
MM 表示分钟数。
YY 指定年份的前 2 个数字。
注: 如果不指定年份的前两位数,70 - 99 范围内的数值指的是 20 世纪,1970 - 1999(含)。 类似地,范围 00 到 37 中的值指的是 21 世纪中的年份,包括 2000 年到 2037 年。
yy 指定年份的后 2 个数字。
注: date 命令接受 4 数字年份作为输入。 例如,如果指定了由 4 个数字组成的年份,那么 date 命令会尝试按照 YYyy 格式设置该年份,并且对于超出范围(小于 1970 年和大于 2105 年)的值,该命令会失败。 对于范围 2038 到 2105 中的年份,请采用 yyyy 格式指定该年份。

若没有指定年份,当前的年份将作为缺省值使用。 系统按照全球标准时间 (CUT) 操作。

如果您在 date 命令后加上 +(加号)和一个字段描述符,您可以控制命令的输出。 您必须在每个字段之前加上一个 %(百分号)。 系统用指定的值替换字段描述符。 输入一个文字 % 作为 %%(两个百分号)。 date 命令复制任何其他的字符到输出中而不加更改。 date 命令始终以换行符作为字符串的结尾。

标志

描述
-a [ + | - ]sss[.fff ] 缓慢调整时间 sss.fff 秒(fff 代表秒片断)。 该调整可以是正向或负向的。 系统的时钟会加快或减慢,直到它漂移了指定的秒数。
-n 不会在局域网内其时钟同步的所有系统上全局设置时间。
-u 按照全球标准时间 (CUT) 显示或者设置时间。

字段描述符

描述
%a 显示语言环境的简略周日名称。
%A 显示语言环境的完整周日名称。
%b 显示语言环境的简略月份名称。
%B 显示语言环境的完整月份名称。
%c 显示语言环境的相应日期和时间表示(缺省值)。
%C 以十进制数显示四个数字代表的年份的前两个数字 (00-99)。 一年除以 100 并且只取整数部分。
%d 以十进制数显示月份中的日期 (01-31)。 在两个数字的字段,0 表示前导空间填充。
%D 按照等同于 %m/%d/%y 的格式显示日期。
%e 按照十进制数显示月份中的日期 (1-31)。 在两个数字的字段,空白空间用作前导空格填充。
%h 显示语言环境的简略月份名称(%b 的同义词)。
%H 以十进制数 (00-23) 显示小时(24 小时制)。
%I 用十进制数 (01-12) 显示小时(12 小时制)。
%j 以十进制数 (001-366) 显示一年中的日期。
%k 以右对齐、空格填充的数字(0 到 23)显示 24 小时制时钟的读数。
%m 以十进制数 (01-12) 显示一年中的月份。
%M 以十进制数 (00-59) 显示分钟。
%n 插入一个换行符。
%p 显示语言环境中 AM 或 PM 的等价物。
%r 使用 AM-PM 符号表示法显示 12 小时制时间 (01-12);在 POSIX 语言环境中,它等同于 %I:%M:%S %p
%S 以十进制数(00 到 59)显示秒数。
%s 显示从全球标准时间 (CUT) 1970 年 1 月 1 日起的秒数。
%t 插入 <tab> 字符。
%T 显示 24 小时制 (00-23),按照等同于 HH:MM:SS 的格式。
%u 以范围 1 到 7 中的十进制数显示平日(星期日 = 7)。 请参阅 %w 字段描述符。
%U 以十进制数 [00 - 53] 显示一年中的每一周(星期日作为一周的第一天)。 会将新的一年中第一个星期日之前的所有天都视为属于第 0 周。
%V 以范围 01 到 53 中的十进制数显示一年中的每一周(星期一作为一周的第一天)。 如果包含 1 月 1 日的那一周有四天或超过四天在新的一年,那么会将该周视为第 01 周。 否则,该周是前一年的第 53 周。
%w 以范围 0 到 6 中的十进制数显示平日(星期日 = 0)。 请参阅 %u 字段描述符。
%W 按照十进制以星期一作为一周的第一天来显示一年中的周数 (00-53)。
%x 显示语言环境的适当的日期的表示。
%X 显示语言环境的适当的时间的表示。
%y 显示年份的最后两个数字 (00-99)。
%Y 按照十进制以四个数字显示年份。
%Z 显示时区名称或时区偏移量 (如果适用)。 如果未确定时区,那么不会显示任何字符。
%% 显示一个 %(百分号)字符。

修改的字段描述符

可以修改 %E%O 字段描述符以指示不同的格式或规范,如 Files Reference中的 Locale Definition Source File Format 的 LC_TIME Category 中所述。 如果当前语言环境未指定或不支持相应的关键字 (请参阅 eraera_yearera_d_fmtalt_digits 关键字) ,那么将使用未修改的字段描述符值。

描述
%Ec 显示语言环境的适当备用日期和时间表示。
%EC 在语言环境的备用表示中显示基准年份名(或者其他时间周期)。
%Ex 显示语言环境的备用日期表示。
%EX 显示语言环境的备用时间表示。
%Ey 在语言环境的备用表示中显示 %EC 字段描述符的偏移量(只针对年)。
%EY 显示完整的备用年份表示。
%Od 使用语言环境的备用数字符号显示月份中的日期。
%Oe 使用语言环境的备用数字符号显示月份中的日期。
%OH 用语言环境的备用数字符号显示小时(24 小时制)。
%OI 用语言环境的备用数字符号显示小时(12 小时制)。
描述
%Om 使用语言环境的备用数字符号显示月份。
%OM 使用语言环境的备用数字符号显示分钟。
%OS 使用语言环境的备用数字符号显示秒。
%Ou 使用语言环境的备用表示以数字显示周日(星期一 = 1)。
%OU 使用语言环境的备用数字符号显示一年当中的周号。 星期日认为是一周中的第一天。
%OV 使用语言环境的备用数字符号显示一年当中的周号。 星期一认为是一周中的第一天。
%Ow 使用语言环境的备用表示以数字显示周日(星期日 = 0)。
%OW 使用语言环境的备用数字符号显示一年当中的周号。 星期一认为是一周中的第一天。
%Oy 使用备用表示显示年份(%C 的偏移量)。

退出状态

本命令返回以下退出值:

描述
0 该日期已经成功写入。
>0 发生错误。

安全性

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要显示当前日期和时间,请输入:
    date
  2. 要设置日期和时间,请输入:
    date 0217142590
     
    对于使用 CST 作为其时区的系统,此命令将日期和时间设置为如下:CST 1990 年 2 月 17 日 14:25:00 星期六。
    注: 您必须具有更改日期和时间的 root 用户权限。
  3. 要以指定的格式显示日期和时间,请输入:
    date +"%r %a %d %h %y (Julian Date: %j)"
    此命令会显示在示例 2 中显示的日期,如下所示:
    02:25:03 PM Fri 17 Feb 90 (Julian Date: 048)

环境变量

以下环境变量将会影响到 date 命令的执行效果。

描述
LAN 确定在 LC_ALL 和相应的环境变量(以 LC_ 开头)都不指定语言环境的时候将要使用的缺省语言环境。
LC_ALL 确定要用于覆盖由 LANG 或任何以 LC_ 开头的环境变量设置指定的任何语言环境类别值的语言环境。
LC_CTYPE 确定文本数据的字节序列解释为字符时使用的语言环境(例如参数中单对多字节字符)。
LC_MESSAGES 确定要用于编写消息的语言。
LC_TIME 确定由 date 命令写入的日期和时间字符串的内容。
NLSPATH 为处理 LC_MESSAGES 确定消息目录的位置。
TZ 指定写入时间和日期时采用的时区,除非指定了 -u 标志。 如果未设置 TZ 变量且未指定 -u 标志,那么使用非指定的系统缺省时区。