summarylogtreecommitdiffstats
path: root/timezonedb-guess.patch
diff options
context:
space:
mode:
Diffstat (limited to 'timezonedb-guess.patch')
-rw-r--r--timezonedb-guess.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/timezonedb-guess.patch b/timezonedb-guess.patch
new file mode 100644
index 000000000000..10c057e40799
--- /dev/null
+++ b/timezonedb-guess.patch
@@ -0,0 +1,27 @@
+index cf4a11b..f2ea919 100644
+--- a/ext/date/php_date.c
++++ b/ext/date/php_date.c
+@@ -545,6 +545,23 @@ static char* guess_timezone(const timelib_tzdb *tzdb)
+ DATEG(timezone_valid) = 1;
+ return DATEG(default_timezone);
+ }
++ /* Try to guess timezone from system information */
++ {
++ struct tm *ta, tmbuf;
++ time_t the_time;
++ char *tzid = NULL;
++
++ the_time = time(NULL);
++ ta = php_localtime_r(&the_time, &tmbuf);
++ if (ta) {
++ tzid = timelib_timezone_id_from_abbr(ta->tm_zone, ta->tm_gmtoff, ta->tm_isdst);
++ }
++ if (! tzid) {
++ tzid = "UTC";
++ }
++
++ return tzid;
++ }
+ /* Fallback to UTC */
+ return "UTC";
+ }