summaryrefslogtreecommitdiffstats
path: root/library/clock.tcl
diff options
context:
space:
mode:
authornijtmans <nijtmans>2008-12-11 14:01:59 (GMT)
committernijtmans <nijtmans>2008-12-11 14:01:59 (GMT)
commit07779703b451dce687221a6608d0bef01e3afde0 (patch)
treec39135221c14bcfff0a9ee97f413753bfe0fd15e /library/clock.tcl
parentb008803bf2feb7fa0c43d9890e57d94007b5f304 (diff)
downloadtcl-07779703b451dce687221a6608d0bef01e3afde0.zip
tcl-07779703b451dce687221a6608d0bef01e3afde0.tar.gz
tcl-07779703b451dce687221a6608d0bef01e3afde0.tar.bz2
Fallback to European time zone DST rules, when the timezone is
between 0 and -12 [Bug 2207436].
Diffstat (limited to 'library/clock.tcl')
-rw-r--r--library/clock.tcl33
1 files changed, 26 insertions, 7 deletions
diff --git a/library/clock.tcl b/library/clock.tcl
index e4a21e3..bfac4e6 100644
--- a/library/clock.tcl
+++ b/library/clock.tcl
@@ -13,7 +13,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: clock.tcl,v 1.49 2008/11/30 19:24:00 kennykb Exp $
+# RCS: @(#) $Id: clock.tcl,v 1.50 2008/12/11 14:01:59 nijtmans Exp $
#
#----------------------------------------------------------------------
@@ -3885,23 +3885,42 @@ proc ::tcl::clock::ProcessPosixTimeZone { z } {
* $dstSignum }]
}
- # Fill in defaults for US DST rules
+ # Fill in defaults for European or US DST rules
if { [dict get $z startDayOfYear] eq {}
&& [dict get $z startMonth] eq {} } {
+ if {($stdHours>=0) && ($stdHours<=12)} {
+ dict set z startWeekOfMonth 5
+ if {$stdHours>1} {
+ dict set z startHours 2
+ } else {
+ dict set z startHours [expr {$stdHours+1}]
+ }
+ } else {
+ dict set z startWeekOfMonth 2
+ dict set z startHours 2
+ }
dict set z startMonth 3
- dict set z startWeekOfMonth 2
dict set z startDayOfWeek 0
- dict set z startHours 2
dict set z startMinutes 0
dict set z startSeconds 0
}
if { [dict get $z endDayOfYear] eq {}
&& [dict get $z endMonth] eq {} } {
- dict set z endMonth 11
- dict set z endWeekOfMonth 1
+ if {($stdHours>=0) && ($stdHours<=12)} {
+ dict set z endMonth 10
+ dict set z endWeekOfMonth 5
+ if {$stdHours>1} {
+ dict set z endHours 3
+ } else {
+ dict set z endHours [expr {$stdHours+2}]
+ }
+ } else {
+ dict set z endMonth 11
+ dict set z endWeekOfMonth 1
+ dict set z endHours 2
+ }
dict set z endDayOfWeek 0
- dict set z endHours 2
dict set z endMinutes 0
dict set z endSeconds 0
}