2011-05-05 5 views
0

Mon fuseau horaire defaulst dans google calendar est (GMT-08: 00) heure du Pacifique. Maintenant, je génère une demande de réunion et invite deux personnes.
1) une personne dont le fuseau horaire par défaut dans son calendrier est (GMT + 05: 30) heure du Pacifique et son email viennent par le serveur d'échange de Microsoft.
2) seconde j'invite une personne sur le compte de gmail qui a le fuseau horaire par défaut comme (GMT + 05: 30).
le fichier ics que j'ai vu a DTSTART comme DTSTART: 20110506T170000Z cela signifie simplement
yyyymmdd T hhmmss donc l'heure arrive ici dans gmail.
mais la première personne qui consulte Microsoft se DTSTART: 20110506T070000Z alors voici ma question est de savoir comment convertir fuseau horaire afin que les deux vient même ...conversion fuseau horaire en php

date_default_timezone_set($timezonename[0]->timzone_val); 
$meetingstamp = strtotime($meeting_date." ".$timezonename[0]->timzone_val); 
$dtstart= gmdate("Ymd\This\Z",$meetingstamp); 
$dtend= gmdate("Ymd\This\Z",$meetingstamp+$meeting_duration); 
$todaystamp = gmdate("Ymd\This\Z"); 

ici mon timzone vient en Amérique/Los_Angeles alors comment quelle fonction doit i utiliser pour obtenir les bons horaires ... ????

Répondre

1
$start = new DateTime($meeting_date, new DateTimeZone($timezonename[0]->timzone_val); 
$start->setTimezone(new DateTimeZone('UTC')); 
$end = clone $start; 
$end->modify(sprintf('+ %d seconds', $meeting_duration)); 

echo $start->format('Ymd\THis\Z'); 
echo $end->format('Ymd\THis\Z'); 

Il devrait être une majuscule H dans la chaîne de mise en forme de date en passant, beacuse minuscule h nous représente en 12-Hout format.

EDIT après le dernier commentaire

$start = new DateTime('2011-05-07 10:00', new DateTimeZone('PDT')); 
$start->setTimezone(new DateTimeZone('UTC')); 
$end = clone $start; 
$end->modify(sprintf('+ %d seconds', 1*60*60)); 

echo $start->format('Ymd\THis\Z'); 
echo "\n"; 
echo $end->format('Ymd\THis\Z'); 

résultats dans

20110507T170000Z 
20110507T180000Z 

Ce sont exactement les valeurs que vous souhaitez obtenir.

+0

dans mon serveur la classe datetime n'est pas activée je pense, j'utilise PHP 5.3.1 d'où puis-je vérifier qu'il est activé ou désactivé. – Jaimin

+0

'DateTime' est disponible en PHP 5.2.0 et versions ultérieures et il ne peut pas être désactivé (pour autant que je sache) du tout. Donc, si vous utilisez 5.3.1, vous devriez utiliser les classes 'DateTime'. –

+0

toujours le même je reçois ... 20110507T070000Z 20110507T080000Z – Jaimin

Questions connexes