diff options
-rw-r--r-- | program/include/main.inc | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/program/include/main.inc b/program/include/main.inc index 798a1fe0e..ecb46ab25 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -725,7 +725,7 @@ function rcube_strtotime($date) * Convert the given date to a human readable form * This uses the date formatting properties from config * - * @param mixed Date representation (string or timestamp) + * @param mixed Date representation (string, timestamp or DateTime object) * @param string Date format to use * @param bool Enables date convertion according to user timezone * @@ -735,23 +735,31 @@ function format_date($date, $format=NULL, $convert=true) { global $RCMAIL, $CONFIG; - if (!empty($date)) - $ts = rcube_strtotime($date); + if (is_a($date, 'DateTime')) { + $ts = $date->format('U'); + $tzs = $date->getTimezone(); + } + else { + $tzs = 'GMT'; - if (empty($ts)) - return ''; + if (!empty($date)) + $ts = rcube_strtotime($date); - try { - $date = new DateTime("@".$ts); - } - catch (Exception $e) { - return ''; + if (empty($ts)) + return ''; + + try { + $date = new DateTime("@".$ts); + } + catch (Exception $e) { + return ''; + } } try { // convert to the right timezone $stz = date_default_timezone_get(); - $tz = new DateTimeZone($convert ? $RCMAIL->config->get('timezone') : 'GMT'); + $tz = new DateTimeZone($convert ? $RCMAIL->config->get('timezone') : $tzs); $date->setTimezone($tz); date_default_timezone_set($tz->getName()); |