2015-10-06 1 views
1

J'ai une base de données de fuseau horaire à partir https://timezonedb.com/downloadAfficher GMT Offset en PHP

Chaque fuseau horaire ligne interrogé a un champ TIME_START et un autre champ appelé gmt_offset

Par exemple une ligne serait

 [zone_id] => 191 
     [zone_name] => Asia/Kolkata 
     [country_name] => India 
     [time_start] => -891582800 
     [gmt_offset] => 23400 
     [dst] => 0 

Ce que j'ai besoin d'afficher à partir de cela est le pays et le décalage GMT comme ceci via PHP

India: GMT +5:30 

J'ai essayé

  $plusoffset = $row->time_start+$row->gmt_offset; 
      $minusoffset = $row->time_start-$row->gmt_offset; 
      echo "Time Start: ". date('h:i:s',$row->time_start).'<br>'; 
      echo "Offset: ". date('h:i:s',$row->gmt_offset).'<br>'; 
      echo "Start+Offset: ". date('h:i:s',$plusoffset).'<br>'; 
      echo "Start-Offset: ". date('h:i:s',$minusoffset).'<br>'; 

Mais aucune de ces montre le décalage correct.

Je suis sûr qu'il me manque quelque chose d'évident, mais je ne peux pas pour la vie de moi comprendre.

Répondre

1

traduisons les secondes que vous avez là (23400) à des heures et des minutes ...

$gmt_offset = 23400; 

$hours = (int)($gmt_offset/3600); 
$minutes = $gmt_offset % 3600/60; 
echo 'Offset: ' . $hours . ':' . $minutes; 
+0

Il montre encore une heure de plus. Par exemple. au lieu d'afficher 5:30, il montre 6:30. –

+1

23400 est à coup sûr 6,5 heures (vous pouvez diviser par 3600 pour vous voir) Vous devriez demander probablement pourquoi il est 23400. –