下一个: , 上层: Date input formats


A.6.1 常见日期语法

date 是一个字符串,可以为空,包含许多用空格分开的项目。空格在没有歧义时 可以删除。空字串意味着今天起始时间(也就是午夜)。项目的次序不是很重要。在日期字串 里面含有许多项目:

下面我们说明每个项目的类型。

某些情况下,一些普通的数字会写成文字形式。常用在指定星期或相对项目(见下)。 常见的数字中,`last' 表示 -1,`this' 表示 0,而 `first' 和 `next' 都指的是 1。因为 `second' 表示时间的单位,以至于 2 没有对应 的数字,但习惯上 `third' 还是表示 3,`fourth' 表示 4,`fifth' 表示 5,`sixth' 表示 6,`seventh' 表示 7,`eighth' 表示 8, `ninth' 表示 9,`tenth' 表示 10,`eleventh' 表示 11 而 `twelfth' 表示 12.

当月份用这种方式书写时,也仍然考虑写成数字,而不是“全拼”; 这修改允许的字串。

在当前的实施中,只支持英文单词和缩写,如 `AM', `DST', `EST', `first', `January', `Sunday', `tomorrow' 和 `year'。

date 命令并不总是接受日期字串,不仅是因为语言问题,还由于现在还没有像 `IST' 这样时区的标准含义。当用 date 生成的日期字串给以后解析时, 指定一个独立于语言的日期格式,并不采用除 `UTC' 和 `Z' 之外的时区。 有这样一些方法可以做到:

     $ LC_ALL=C TZ=UTC0 date
     Mon Mar  1 00:21:42 UTC 2004
     $ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
     2004-03-01 00:21:42Z
     $ date --iso-8601=ns  # a GNU extension
     2004-02-29T16:21:42,692722128-0800
     $ date --rfc-2822  # a GNU extension
     Sun, 29 Feb 2004 16:21:42 -0800
     $ date +'%Y-%m-%d %H:%M:%S %z'  # %z is a GNU extension.
     2004-02-29 16:21:42 -0800
     $ date +'@%s.%N'  # %s and %N are GNU extensions.
     @1078100502.692722128

日期里面完全忽略字母的大小写。注释写在圆括号内,包括相应的嵌套。不在数字后的 连字符被忽略。数字前面的零也忽略不计。