Domanda

Sembra che ci siano molti modi per avvicinarsi alla data e all'ora massaggiando in php. Di solito mi occupo solo dell'ora locale. Oggi devo lavorare in UTC.

Sto eseguendo una query su un'API, i dati che mi forniscono su un record arbitrario sono: creato: gio, 18 giu 2009 21:44:49 +0000 * Documentato come "orario di creazione del record UTC"

utc_offset: -28800 * Differenza tra utenti re

Devo convertirlo in una semplice stringa per mostrare all'utente a che ora e data sono stati inviati i dati nella loro ora locale.

Credo che quanto sopra si traduca, ad esempio, in California: Giovedì 18 giugno 2009 14:44:49

Il mio obiettivo è arrivare a un valore temporale che posso passare fino ad oggi () per una facile formattazione in una "bella" formato.

È davvero semplice come convertire il tempo sopra creato in secondi dall'epoca, aggiungendo l'offset e passando così fino ad oggi ()? Qualche gothcha da cercare?

$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;

echo date(DATE_RFC822, $localized_time);

Grazie

È stato utile?

Soluzione

PHP dovrebbe fare automaticamente le cose per te. Posso anche consigliare vivamente di utilizzare l'oggetto DateTime invece.

$ dt = new DateTime ($ Created_time);   echo $ dt- > format (DATE_RFC2822);

Le funzioni di data e ora di PHP sono consapevoli del fuso orario. Assicurati di utilizzare una versione recente di PHP, perché è stato fatto molto lavoro per migliorare questi sistemi.

Altri suggerimenti

Puoi utilizzare date_default_timezone_set per passare da un fuso orario all'altro. Nel tuo caso, passeresti le informazioni sul fuso orario dal profilo dell'utente. Come raccomandato da Evert, se stai utilizzando PHP 5 > = 5.2, utilizza il DateTime più avanzato classe.

<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top