clock
command provides access to the time and date functions
in Tcl. Depending on the subcommands invoked, it can acquire the current
time, or convert between different representations of time and date.
The clock
command is a platform independent method of getting
the display functionality of the unix date
command, and provides
access to the values returned by a unix gettime()
call.
clock seconds
clock seconds
command returns the time in seconds since
the epoch. The date of the epoch varies for different operating systems,
thus this value is useful for comparison purposes, or as an input to the
clock format
command.
clock format
clockValue ?-gmt boolean? ?-format string?
format
subcommand formats a clockValue
(as returned by
clock seconds
) into a human readable string.
The -gmt
switch takes a boolean as the second argument. If the boolean
is 1
or true
, then the time will be formatted as Greenwich Mean
Time, otherwise, it will be formatted as local time.
The -format
option controls what format the return will be in. The
contents of the string
argument to format has similar contents as
the format statement (as discussed in lesson 19, 33 and 34). In addition,
there are several more %*
descriptors that can be used to describe
the output.
These include:
%a
. . . . Abbreviated weekday name (Mon, Tue, etc.)
%A
. . . . Full weekday name (Monday, Tuesday, etc.)
%b
. . . . Abbreviated month name (Jan, Feb, etc.)
%B
. . . . Full month name (January, February, etc.)
%d
. . . . Day of month
%j
. . . . Julian day of year
%m
. . . . Month number (01-12)
%y
. . . . Year in century
%Y
. . . . Year with 4 digits
%H
. . . . Hour (00-23)
%I
. . . . Hour (00-12)
%M
. . . . Minutes (00-59)
%S
. . . . Seconds(00-59)
%p
. . . . PM or AM
%D
. . . . Date as %m/%d/%y
%r
. . . . Time as %I:%M:%S %p
%R
. . . . Time as %I:%M
%T
. . . . Time as %I:%M:%S
%Z
. . . . Time Zone Name
clock scan
dateString
scan
subcommand converts a human readable string to a
system clock value, as would be returned by clock seconds
The dateString
argument contains strings in these forms:
set systemTime [clock seconds] puts "The time is: [clock format $systemTime -format %H:%M:%S]" puts "The date is: [clock format $systemTime -format %D]" puts [clock format $systemTime -format {Today is: %A, the %d of %B, %Y}] puts "\n the default format for the time is: [clock format $systemTime]\n" set halBirthBook "Jan 12, 1997" set halBirthMovie "Jan 12, 1992" set bookSeconds [clock scan $halBirthBook] set movieSeconds [clock scan $halBirthMovie] puts "The book and movie versions of '2001, A Space Oddysey' had a" puts "discrepancy of [expr {$bookSeconds - $movieSeconds}] seconds in how" puts "soon we would have sentient computers like the HAL 9000"