[HJG] 2012-02-02 Small and simple program to show the time at some selected places around the world.
With some tweaks to the tcl-console.
======
# Worldtime-clock - http://wiki.tcl.tk/14375
# HaJo Gurt - 2012-02-02
catch {console show}
catch {wm withdraw .}
#console eval {wm geometry . 56x25}
# Resize console & position it at top-right corner on screen, for 1024x768:
console eval {wm geometry . 56x25+550+0}
console eval {.console config -bg grey -fg blue}
proc q {} {exit}
proc w {} {
puts "Time around the world:"
foreach tz {
:Pacific/Honolulu
:America/Los_Angeles
:America/Chicago
:America/New_York
:UTC
:Europe/Berlin
:Africa/Cairo
:Europe/Moscow
:Asia/Tokyo
:Australia/Canberra } {
set td [clock format [clock seconds] \
-format "%H:%M:%S %Y-%m-%d %a %z" -timezone $tz]
puts [format "%-22s %s" $tz $td]
}
}
console title "Worldtime - w to refresh, q to quit"
w
#.
======
'''Result:'''
===
Time around the world:
:Pacific/Honolulu 10:25:00 2012-02-13 Mon -1000
:America/Los_Angeles 12:25:00 2012-02-13 Mon -0800
:America/Chicago 14:25:00 2012-02-13 Mon -0600
:America/New_York 15:25:00 2012-02-13 Mon -0500
:UTC 20:25:00 2012-02-13 Mon +0000
:Europe/Berlin 21:25:00 2012-02-13 Mon +0100
:Africa/Cairo 22:25:00 2012-02-13 Mon +0200
:Europe/Moscow 23:25:00 2012-02-13 Mon +0300
:Asia/Tokyo 05:25:00 2012-02-14 Tue +0900
:Australia/Canberra 07:25:00 2012-02-14 Tue +1100
===
BTW, there is a worldtimeclock buried in the tk-demos that come with ActiveTcl,
look for "Paned Windows and Notebooks / Themed nested panes".
[HJG] 2013-09-13 - Here is an extended version Worldtime-clock2 that offers a "running" clock.<
>
It also does a "flash" every 10 seconds.
You can change that to 60, to get a flash at every full minute.
======
# Worldtime-clock2 - http://wiki.tcl.tk/14375
# HaJo Gurt
# 2012-02-02: worldclock1
# 2013-09-13: c1,c2, t1,t2, every, r,s : colors, titles, run/stop
catch {console show}
catch {wm withdraw .}
#console eval {wm geometry . 56x25}
# Resize console & position it at top-right corner on screen, for 1024x768:
console eval {wm geometry . 56x25+550+0}
proc q {} {exit}
proc every {ms body} {
if 1 $body
after $ms [list after idle [info level 0]]
}
proc c1 {} {
console eval {.console config -bg grey -fg blue}
}
proc c2 {} {
console eval {.console config -bg grey -fg red}
}
proc t1 {} {
console title "Worldtime2 - w to refresh, q to quit / r: run, s: stop"
puts "Worldtime2 - w to refresh, q to quit / r: run, s: stop\n"
}
proc t2 {} {
console title "Worldtime2 - s to stop, q to quit"
}
proc r {} {t2; every 1000 {w}}
proc s {} {foreach id [after info] {after cancel $id}; t1 }
proc w {} {
puts "Time around the world:"
foreach tz {
:Pacific/Honolulu
:America/Los_Angeles
:America/Chicago
:America/New_York
:UTC
:Europe/Berlin
:Africa/Cairo
:Europe/Moscow
:Asia/Tokyo
:Australia/Canberra } {
set ::cs [clock seconds]
if {[expr { $::cs % 10}] == 0} {c2} else {c1} ;# Flash: 10: every 10s / 60: every full minute
set ::td [clock format $::cs \
-format "%H:%M:%S %Y-%m-%d %a %z" -timezone $tz]
puts [format "%-22s %s" $tz $::td]
}
}
c1; t1; w
#.
======
I made cs and td global for debugging & experimenting only,
so you can e.g. enter `puts "$cs $td"` on the commandline.
----
'''See also:''' [Wallclock] - [clock format] - [timezone] - [Windows wish console] - [after] - [every]
<> Date and Time