clock(3tcl) Tcl Built-In Commands clock(3tcl)

clock - 获取和操纵时间

clock option ?arg arg ...?

这个命令进行多种操作中的某一个,可以获取或操纵表示一些时间概念(notion)的字符串或值。option 参数确定这个命令完成什么操作。合法的 options (可以使用缩写) 有:
clock clicks ?-milliseconds?
返回一个高解析度(high-resolution)的时间值,是一个依赖于系统的整数。值的单位是依赖于系统的但应该是系统上可获得的最高解析度的时钟,比如一个 CPU 周期记数(counter)。如果指定了 -milliseconds ,则保证这个值是微秒的粒度。这个值只应用于流逝了的时间的相对测量。
clock format clockValue ?-format string? ?-gmt boolean?
把一个整数时间值转换成人可阅读的形式,典型的,这个时间值是从 clock secondsclock scan、或 file 命令的 atimemtime、或 ctime 选项返回的。如果 -format 参数存在,下一个参数是描述如何格式化日期和时间的一个字符串。字段描述符由一个 % 和随后的字段描述符字符组成。所有的其他字符都复制到结果中。有效的字段描述符有:
%%
插入一个 %。
%a
星期名的缩写 (Mon, Tue, etc.)。
%A
完整的星期名 (Monday, Tuesday, etc.)。
%b
月名的缩写 (Jan, Feb, etc.)。
%B
完整的月名。
%c
特定于本地的日期和时间。
%d
月中的第几天 (01 - 31)。
%H
24小时格式的小时(00 - 23)。
%I
12小时格式的小时 (00 - 12)。
%j
年中的第几天 (001 - 366)。
%m
第几月 (01 - 12)。
%M
分 (00 - 59)。
%p
AM/PM 指示符。
%S
秒 (00 - 59)。
%U
年中的第几星期 (00 - 52),星期天是一个星期中的第一天。
%w
星期几 (Sunday = 0)。
%W
年中的第几星期 (00 - 52),星期一是一个星期中的第一天。
%x
特定于本地的日期格式。
%X
特定于本地的时间格式。
%y
世纪中的第几年 (00 - 99)。
%Y
带世纪的年 (例如 1990)。
%Z
时区名。
在一些系统上支持下列补充的字段描述符(例如在 Unix 上而不在 Windows):
%D
形如 %m/%d/%y 的日期。
%e
月中的第几天 (1 - 31),没有前导的零。
%h
月名的缩写。
%n
插入一个换行。
%r
形如 %I:%M:%S %p 的时间。
%R
形如 %H:%M 的时间。
%t
插入一个 tab。
%T
形如 %H:%M:%S 的时间。
如果未指定 -format 参数,使用格式串 “%a %b %d %H:%M:%S %Z %Y”。如果 -gmt 参数存在,下一个参数必须是一个 boolean (值)。如果是真则指定时间作为 Greenwich 标准时来格式化,如果是假则使用操作环境定义的本地时区。
clock scan dateString ?-base clockVal? ?-gmt boolean?
dateString 转换成一个整数时钟值(参见 clock seconds)。这个命令可分析并转换几乎所有的标准的日期和/或时间串,其中可以包含标准的时区助记码(mnemonic)。如果只指定了一个时间,假定为当前的日期。如果串中不包括一个时区助记码,除非 -gmt 参数是真之外假定为本地时区,在 -gmt 参数是真的情况下,假定指定的时间是相对于 Greenwich 标准时来计算时钟值。如果指定了 -gmt,它只影响计算出的时间值,不影响对 -base 的解释。

如果指定了 -base 标记,下一个参数将包括一个整数的时钟值。只使用这个值中的日期而不管时间。这对确定特定的某天的时间或做其他的相对于日期的转换有用。

dateString 包含零个或多个下列形式的指定(specification):

time
一天中的时间,样式是: hh?:mm?:ss?? ?meridian? ?zone? or hhmm ?meridian? ?zone?. 如果为指定上下午(meridian), hh 被解释为一个24小时钟点。
date
一个特定的月和日,年是可选的。可接受的格式是 mm/dd?/yy?, monthname dd ?, yy?, dd monthname ?yy?, day, dd monthname yy, ?CC?yymmdd, ?CC?yy-mm-dd, dd-monthname-?CC?yy. 缺省的年是当前年。如果年小于 100,我们把 00-68 年作为 2000-2068 年而 69-99 年作为 1969-1999 年。注意所有平台都可以表示 38-70 年, 所以如果使用这些年就可能出错。
ISO 8601 point-in-time
一个 ISO 8601 point-in-time 指定,如 CCyymmddThhmmss, 这里 T 是字面的 T,CCyymmdd hhmmss, 或者 CCyymmddThh:mm:ss.
relative time
相对当前时间的一个指定。格式是 number unit,可接受的单位是 yearfortnightmonthweekdayhourminute (或 min)、和 second (或 sec)。单位可以被指定为单数或复数,比如 3 weeks。还可以指定这些修饰符: tomorrowyesterdaytodaynowlastthisnextago
实际的日期计算依照下列的步骤。首先,处理和转换所有绝对日期和/或时间。使用这个时间作为基准(base),添加上星期几(day-of-week)指定。其次,使用相对指定。如果指定了一个日期或某天,并且没有给出绝对或相对的时间,则使用午夜。最后,进行一次校正,这样就在估计了夏令时不同之后产生正确的一天中的小时,并且在从一个大月结束到一个小月时给出正确的日期。

只在用如下单位指定相对时间的时候进行夏令时校正,日或更多,例如 days、 weeks、 fortnights、months 或 years。这意味着跨越夏令时边界的时候,对 clock scan “1 day”clock scan “24 hours” 将给出不同的结果:

% clock scan "1 day" -base [clock scan 1999-10-31]
941443200
% clock scan "24 hours" -base [clock scan 1999-10-31]
941439600
clock seconds
把当前的日期和时间作为依赖于系统的整数值返回。值的单位是秒,允许它被用于相对时间的计算。值通常被定义成从“epoch”开始(至今)总共流逝的时间。你不应该假定 epoch 的值。

clock, date, time

寒蝉退士

2001/06/21

http://cmpp.linuxforum.net

本页面中文版由中文 man 手册页计划提供。
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh
8.3 Tcl