Easy peasy (допустим, $ a = 5,5):
$tz = ($a > 0 ? '+' : '-') . ((int) $a) . ':' . (($a - (int)$a)*60)
Первый бит дает вам знак - или + (левый / правый часовой пояс), во-вторых, приведя $ a к (int), вы потеряете дробныйpart и третий бит сначала получают дробную часть (я уверен, что для этого есть функция php, но я пришел из C в основном так: 5.5 - (int) 5.5 = 5.5 - 5 = 0.5).Дробная часть выражается в часах (5,5 часов - это 5 часов и 30 минут), поэтому в основном 0,5 * 60 дает вам дробную часть в минутах.
РЕДАКТИРОВАТЬ: Вот более чистая (однострочная) версия:
$time = sprintf("%+03d:%2d", (int)$a, abs($a-(int)$a)*60);
Этот в значительной степени самый простой.Спасибо, Инхан, за указание на детали abs ():