You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.1 KiB

<?php
namespace p3k\date;
use DateTime, DateTimeZone;
// $format - one of the php.net/date format strings
// $date - a string that will be passed to DateTime()
// $offset - integer timezone offset in seconds
function format_local($format, $date, $offset) {
if($offset != 0)
$tz = new DateTimeZone(($offset < 0 ? '-' : '+') . sprintf('%02d:%02d', abs(floor($offset / 60 / 60)), (($offset / 60) % 60)));
else
$tz = new DateTimeZone('UTC');
$d = new DateTime($date);
$d->setTimeZone($tz);
return $d->format($format);
}
function tz_offset_to_seconds($offset) {
if(preg_match('/([+-])(\d{2}):?(\d{2})/', $offset, $match)) {
$sign = ($match[1] == '-' ? -1 : 1);
return (($match[2] * 60 * 60) + ($match[3] * 60)) * $sign;
} else {
return 0;
}
}
function tz_seconds_to_offset($seconds) {
return ($seconds < 0 ? '-' : '+') . sprintf('%02d:%02d', abs($seconds/60/60), ($seconds/60)%60);
}
function tz_seconds_to_timezone($seconds) {
if($seconds != 0)
$tz = new DateTimeZone(tz_seconds_to_offset($seconds));
else
$tz = new DateTimeZone('UTC');
return $tz;
}