diff --git a/include/class.misc.php b/include/class.misc.php index d8f2523045c2628f0fe796ace96ed44e761549ae..b897f5b2f4cbb608d4c34657ed3fa9ade3efd3ca 100644 --- a/include/class.misc.php +++ b/include/class.misc.php @@ -86,23 +86,15 @@ class Misc { $tz = new DateTimeZone($cfg->getTimezone($user)); - if (!$timestamp) - $timestamp = 'now'; - - if (is_int($timestamp)) { - $time = $timestamp; - } else { - if (!($date = new DateTime($timestamp, $tz))) { - // Timestamp might be invalid + if ($timestamp && is_int($timestamp)) { + if (!($date = DateTime::createFromFormat('U', $timestamp))) return $timestamp; - } - $time = $date->format('U'); - } - if (!($D = DateTime::createFromFormat('U', $time))) - return $time; + return $timestamp - $tz->getOffset($date); + } - return $time - $tz->getOffset($D); + $date = new DateTime($timestamp ?: 'now', $tz); + return $date ? $date->getTimestamp() : $timestamp; } //Take user time or gmtime and return db (mysql) time. @@ -131,10 +123,14 @@ class Misc { global $cfg; $tz = new DateTimeZone($user ? $cfg->getDbTimezone($user) : 'UTC'); - if (!($time = new DateTime($time ?: 'now'))) { + + if ($time && is_numeric($time)) + $time = DateTime::createFromFormat('U', $time); + elseif (!($time = new DateTime($time ?: 'now'))) { // Old standard return time() - date('Z'); } + return $time->getTimestamp() - $tz->getOffset($time); }