Fork me on GitHub






convertir une date avec time zone en date locale
Aspirant
Inscrit: 11/11/2010 14:56
Messages: 78
Bonsoir,

Qui peut m'expliquer le but de ce bout de code, je cherche à convertir n'importe qu'elle date en fonction de time zone en date locale ou plutôt date de mon serveur qui se trouve en Europe.
Normalement je doit tomber sur une date $unix =< time() une fois converti


if (preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s+)?(\d{1,2})\s+([a-zA-Z]{3})\s+(\d{4})\s+(\d{2}):(\d{2}):(\d{2})\s+(.*)~"$pubDate$matches)) {

            
$months = Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);
            
$unix mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]);
            if (
substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
                
$tzOffset = (substr($matches[7],0,3) * 60 substr($matches[7],-2)) * 60;
            } else {
                if (
strlen($matches[7])==1) {
                    
$oneHour 3600;
                    
$ord ord($matches[7]);
                    if (
$ord ord("M")) {
                        
$tzOffset = (ord("A") - $ord 1) * $oneHour;
                    } elseif (
$ord >= ord("M") AND $matches[7]!="Z") {
                        
$tzOffset = ($ord ord("M")) * $oneHour;
                    } elseif (
$matches[7]=="Z") {
                        
$tzOffset 0;
                    }
                }
                switch (
$matches[7]) {
                    case 
"UT":
                    case 
"GMT":    $tzOffset 0;
                }
            }
            
$unix += $tzOffset;
        }        
        
        if (
preg_match("~(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(.*)~",$pubDate,$matches)) {
            
$unix mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
            if (
substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
                
$tzOffset = (substr($matches[7],0,3) * 60 substr($matches[7],-2)) * 60;
            } else {
                if (
$matches[7]=="Z") {
                    
$tzOffset 0;
                }
            }
            
$unix += $tzOffset;
        }


Voiçi 3 exemples. Merci
date à convertir Mon05 Nov 2012 23:12:02 GMT
date locale Mon
05 Nov 2012 22:39:31 +0100
Date converti 1352153522
timestemp now 1352151571


date à convertir Mon
05 Nov 2012 22:10:11 +0100
date locale Mon
05 Nov 2012 22:39:32 +0100
Date converti 1352153411
timestemp now 1352151572


date à convertir Mon
05 Nov 2012 22:27:00 +0100
date locale Mon
05 Nov 2012 22:39:32 +0100
Date converti 1352154420
timestemp now 1352151572

Posté le : 05/11/2012 22:59
Partager Twitter Partagez cette article sur GG+
Re: convertir une date avec time zone en date locale
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
si le public de ton site est répandu sur plusieurs fuseaux horaires, je te conseillerai de mettre ton serveur a l'heure GMT.
Ensuite tu utiliseras les fonctions 'gmmktime' et 'gmdate' de PHP, ces fonctions ont la particularité de tout stocker en format GMT. Si tu veux ensuite mettre en heure française suffit de rajouter 3600 au timestamp obtenu (pour l'heure d'hiver, pour l'heure d'été c'est 6200).
Après si tu veux une fonctionnalité spécifique, il faudrait que tu nous l'explique un peu mieux

Posté le : 07/11/2012 09:19
Partager Twitter Partagez cette article sur GG+
Re: convertir une date avec time zone en date locale
Aspirant
Inscrit: 11/11/2010 14:56
Messages: 78
Merci Montuy pour la reponse, tu repond déjà sur 3 autres questions etaient dans ma tête.

Je cherche a parser des XML et enregistrer leurs contenu dans la base de données, les pubdate sont en fonction de time zone parfois GMT parfois +000, +0100 ...je veut convertir les pubDate en time locale pour enregistrer dans la base de donnée et plutard faire la condition if ($pubDate >= $last_run){ insert dans la base de donnée }

avec mon code je tombe parfois sur des pubDate > last_run et qui sont déjà enregistré dans ma base.

Posté le : 07/11/2012 11:51
Partager Twitter Partagez cette article sur GG+
Re: convertir une date avec time zone en date locale
Aspirant
Inscrit: 11/11/2010 14:56
Messages: 78
up

Posté le : 10/11/2012 20:48
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

27 Personne(s) en ligne (16 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 27 | Plus ...