2017-08-20 4 views
1

Je suis aller chercher des e-mails en utilisant PHP et Imap ceci est un exemple d'un objet:conversion de la date d'horodatage basé sur fuseau horaire

Array 
(
    [0] => stdClass Object 
     (
      [subject] => Email Subject 
      [from] => Sender <[email protected]> 
      [to] => [email protected] 
      [date] => Sat, 19 Aug 2017 20:09:33 +1000 
      [message_id] => <[email protected]> 
      [size] => 1881518 
      [uid] => 703 
      [msgno] => 527 
      [recent] => 0 
      [flagged] => 0 
      [answered] => 0 
      [deleted] => 0 
      [seen] => 0 
      [draft] => 0 
      [udate] => 1503137430 
     ) 

) 

Bien que j'ai un udate mais je voulais vérifier si mon fuseau horaire correspond , donc je l'ai fait:

date_default_timezone_set('Australia/Melbourne'); 
$str = 'Sat, 19 Aug 2017 20:09:33 +1000'; 
echo strtotime($str); // 1503137373 ?? 

même essayé:

$date = new DateTime($str, new DateTimeZone('Australia/Melbourne')); 
$timestamp = $date->format('U'); 
echo $timestamp; // 1503137373 ?? 

donc, dans les deux cas que je reçois à imestamp qui ne correspond pas à celui qui est récupéré du serveur mail, qu'est-ce qui me manque ici?

+0

est un moyen de suivre le temps comme un total de secondes en cours d'exécution. donc votre courrier de base de données envoyé l'heure et l'heure actuelle ne sera plus jamais la même –

+0

si vous pouvez obtenir le fuseau horaire de la base de données que votre problème est résolu –

+0

Alors, ils sont à environ une minute? ... 430 et .... 373. ce n'est pas un fuseau horaire. Pourrait-il être le temps envoyé et le temps reçu? – Andreas

Répondre

0

vous pouvez faire quelque chose comme ça

date_default_timezone_set('Australia/Melbourne'); 

$script_tz = date_default_timezone_get(); 

if (strcmp($script_tz, ini_get('date.timezone'))){ 
    echo 'Script timezone differs from ini-set timezone.'; 
} else { 
    echo 'Script timezone and ini-set timezone match.'; 
} 
horodatage
1
  • udate - marqué par un mailserver

  • Date, la date - marquée par un client

La différence entre 'date' et 'udate' semble être un peu plus que juste la façon dont ils sont formatés. 'Date' est la date qui a été écrite dans les en-têtes par le client de messagerie de l'expéditeur, et qui a probablement peu à voir avec la réalité. C'est en fonction de votre expéditeur sachant quelle est l'heure exacte; il pourrait être de quelques minutes, jours, mois ou même des années. 'Udate' est la date réelle à laquelle l'e-mail a atteint votre serveur IMAP. Utilisez 'udate' si vous voulez faire des trucs comme travailler combien d'e-mails vous recevez tous les jours - ou, comme moi, combien de spams je reçois.

http://titanic.fauser.edu/php/function.imap-headerinfo.php.htm


De here:

Date - La date du message que l'on trouve dans ses en-têtes

Date - Identique à la date

udate - message date à l'heure d'Unix