mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
My latest working version, but we 'll need to roll back a bit as there
are more changes planned (from_timestamp bites the dust etc).
This commit is contained in:
parent
1faca355ee
commit
deab60a42b
@ -145,10 +145,45 @@ function olson_todst ($filename) {
|
||||
|
||||
// start-of-year timestamp
|
||||
// TODO: perhaps should consider the current DST rule
|
||||
if($mdl_tz['from'] < 1970) {
|
||||
$mdl_tz['from'] = 1970;
|
||||
|
||||
if(empty($mdl_tz['dst_startday'])) {
|
||||
// Either 0 or unset, bottom line is that DST doesn't get on that year
|
||||
$timestamp_dst = 0;
|
||||
}
|
||||
$mdl_tz['from_timestamp'] = gmmktime(0, 0, 0, 1, 1, $mdl_tz['from'], 0) - $mdl_tz['gmtoff'] * 60 ;
|
||||
else {
|
||||
$find_day = find_day_in_month($mdl_tz['dst_startday'], $mdl_tz['dst_weekday'], $mdl_tz['dst_month'], $mdl_tz['from']);
|
||||
$timestamp_dst = gmmktime(0, 0, 0, $mdl_tz['dst_month'], $find_day, $mdl_tz['from'], 0) - $mdl_tz['gmtoff'] * 60;
|
||||
// Add the "nominal GMT time" at that moment
|
||||
if(!strpos($mdl_tz['dst_time'], ':')) {
|
||||
print_object('x');
|
||||
print_object($mdl_tz);
|
||||
}
|
||||
list($hours, $mins) = explode(':', $mdl_tz['dst_time']);
|
||||
|
||||
$timestamp_dst += ($hours * 60 + $mins) * 60;
|
||||
}
|
||||
if(empty($mdl_tz['std_startday'])) {
|
||||
// Either 0 or unset, bottom line is that DST doesn't get on that year
|
||||
$timestamp_std = 0;
|
||||
}
|
||||
else {
|
||||
$find_day = find_day_in_month($mdl_tz['std_startday'], $mdl_tz['std_weekday'], $mdl_tz['std_month'], $mdl_tz['from']);
|
||||
$timestamp_std = gmmktime(0, 0, 0, $mdl_tz['std_month'], $find_day, $mdl_tz['from'], 0) - $mdl_tz['gmtoff'] * 60;
|
||||
// Add the "nominal GMT time" at that moment
|
||||
list($hours, $mins) = explode(':', $mdl_tz['std_time']);
|
||||
$timestamp_dst += ($hours * 60 + $mins) * 60;
|
||||
}
|
||||
|
||||
$timestamp = min($timestamp_dst, $timestamp_std);
|
||||
// For zones that use no rule, this will still be 0. If so, make it Jan 1st of that year
|
||||
|
||||
if($timestamp == 0) {
|
||||
$mdl_tz['from_timestamp'] = gmmktime(0, 0, 0, 1, 1, $mdl_tz['from'], 0) - $mdl_tz['gmtoff'] * 60;
|
||||
}
|
||||
else {
|
||||
$mdl_tz['from_timestamp'] = $timestamp;
|
||||
}
|
||||
|
||||
if($mdl_tz['from_timestamp'] < 0) {
|
||||
// This can still happen if $mdl_tz['gmtoff'] < 0
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user