From 88717d88057ac0c51a2d7842305c808691404e6f Mon Sep 17 00:00:00 2001 From: Mike Cochrane Date: Sun, 20 Jul 2008 10:13:25 -0400 Subject: User definable timezones. Work in UTC internally and display per user/site default. http://laconi.ca/PITS/00011 darcs-hash:20080720141325-533db-87cb60501434c9dc0ac13716ba5d8b17754431f5.gz --- lib/util.php | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'lib/util.php') diff --git a/lib/util.php b/lib/util.php index 1ec68863e..c095fe768 100644 --- a/lib/util.php +++ b/lib/util.php @@ -435,6 +435,18 @@ function common_textarea($id, $label, $content=NULL, $instructions=NULL) { common_element_end('p'); } +function common_timezone() { + if (common_logged_in()) { + $user = common_current_user(); + if ($user->timezone) { + return $user->timezone; + } + } + + global $config; + return $config['site']['timezone']; +} + function common_language() { $httplang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : NULL; $language = array(); @@ -920,23 +932,31 @@ function common_date_string($dt) { } function common_exact_date($dt) { - $t = strtotime($dt); - return date(DATE_RFC850, $t); + $dateStr = date('d F Y H:i:s', strtotime($dt)); + $d = new DateTime($dateStr, new DateTimeZone('UTC')); + $d->setTimezone(new DateTimeZone(common_timezone())); + return $d->format(DATE_RFC850); } function common_date_w3dtf($dt) { - $t = strtotime($dt); - return date(DATE_W3C, $t); + $dateStr = date('d F Y H:i:s', strtotime($dt)); + $d = new DateTime($dateStr, new DateTimeZone('UTC')); + $d->setTimezone(new DateTimeZone(common_timezone())); + return $d->format(DATE_W3C); } function common_date_rfc2822($dt) { - $t = strtotime($dt); - return date("r", $t); + $dateStr = date('d F Y H:i:s', strtotime($dt)); + $d = new DateTime($dateStr, new DateTimeZone('UTC')); + $d->setTimezone(new DateTimeZone(common_timezone())); + return $d->format('r'); } function common_date_iso8601($dt) { - $t = strtotime($dt); - return date("c", $t); + $dateStr = date('d F Y H:i:s', strtotime($dt)); + $d = new DateTime($dateStr, new DateTimeZone('UTC')); + $d->setTimezone(new DateTimeZone(common_timezone())); + return $d->format('c'); } function common_redirect($url, $code=307) { -- cgit v1.2.3-54-g00ecf