Page MenuHomePhorge

D2647.1775159500.diff
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

D2647.1775159500.diff

diff --git a/lib/kolab_sync_timezone_converter.php b/lib/kolab_sync_timezone_converter.php
old mode 100644
new mode 100755
--- a/lib/kolab_sync_timezone_converter.php
+++ b/lib/kolab_sync_timezone_converter.php
@@ -393,6 +393,15 @@
$timezoneInfo = unpack($timezoneUnpackString, base64_decode($_packedTimezoneInfo));
+ if ($timezoneInfo['standardHour'] == 23 && $timezoneInfo['standardMilliseconds'] == 999
+ && $timezoneInfo['standardMinute'] == 59 && $timezoneInfo['standardSecond'] == 59
+ ) {
+ $timezoneInfo['standardHour'] = 24;
+ $timezoneInfo['standardMinute'] = 0;
+ $timezoneInfo['standardSecond'] = 0;
+ $timezoneInfo['standardMilliseconds'] = 0;
+ }
+
return $timezoneInfo;
}
@@ -408,6 +417,16 @@
return null;
}
+ // According to e.g. https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-systemtime,
+ // 24 is not allowed in the Hour field, and consequently Outlook can't deal with it.
+ // This is the same workaround that Outlook applies.
+ if ($_timezoneInfo['standardHour'] == 24) {
+ $_timezoneInfo['standardHour'] = 23;
+ $_timezoneInfo['standardMinute'] = 59;
+ $_timezoneInfo['standardSecond'] = 59;
+ $_timezoneInfo['standardMilliseconds'] = 999;
+ }
+
$packed = pack(
"la64vvvvvvvvla64vvvvvvvvl",
$_timezoneInfo['bias'],
diff --git a/tests/timezone_converter.php b/tests/timezone_converter.php
old mode 100644
new mode 100755
--- a/tests/timezone_converter.php
+++ b/tests/timezone_converter.php
@@ -103,6 +103,18 @@
$this->assertSame($output['daylightMonth'], 3);
$this->assertSame($output['daylightDay'], 5);
$this->assertSame($output['daylightHour'], 0);
+
+ $output = $converter->getOffsetsForTimezone('Asia/Tehran', $datetime);
+
+ $this->assertSame($output['bias'], -210);
+ $this->assertSame($output['standardBias'], 0);
+ $this->assertSame($output['standardMonth'], 9);
+ $this->assertSame($output['standardDay'], 3);
+ $this->assertSame($output['standardHour'], 24);
+ $this->assertSame($output['daylightBias'], -60);
+ $this->assertSame($output['daylightMonth'], 3);
+ $this->assertSame($output['daylightDay'], 4);
+ $this->assertSame($output['daylightHour'], 0);
}
}

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 2, 7:51 PM (4 d, 8 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18820570
Default Alt Text
D2647.1775159500.diff (2 KB)

Event Timeline