2016-04-22 11 views
1

Ich arbeite mit der SparkPost-API und ich habe Probleme zu verstehen, wie Sie ein Datum mit YYYY-MM-DDTHH: MM erstellen : SS + -HH: MM in PHP.Erstellen dieses Datumsformat in PHP: JJJJ-MM-TTTHH: MM: SS + -HH: MM

Was ist + -HH: MM, ist das die Zeitzone?

Der nächstgelegene ich von der Überprüfung anderer ähnlicher Stapelaustausch Themen gekommen sind, ist dies:

if (!$send_now && self::$row->datetime) 
{ 
    // This data is available: [send_datetime] => 04/01/2016 01:30 
    // This data is available: [timezone] => MDT-UTC-7 
    $send_at = date('Y-m-dTH:i:s' , strtotime(self::$row->datetime)); 
} 
else 
{ 
    $send_at = 'now'; 
} 

Ein weiterer FYI mit Wordpress Ich arbeite und die Zeitzone die Instanz auf ausrichten möchten.

Jede Hilfe wird geschätzt.


aktualisiert Code,
if (!$send_now && self::$row->datetime) { 
    $send_at = date('c' , strtotime(self::$row->datetime)); 
    if (isset(self::$email_settings['timezone'])) { 
     $date_parts = explode('+' , $send_at); 
     $timezone_parts = explode('UTC' , self::$email_settings['timezone']); 
     $send_at = $date_parts[0] .$timezone_parts[1].':00'; 
    } 
} else { 
     $send_at = 'now'; 
} 

Antwort

3

Dies ist ein ISO 8601 Datumsformat. Siehe https://en.wikipedia.org/wiki/ISO_8601.

Der + -HH: MM ist der Zeitzonen-Offset von UTC.

In PHP können Sie 'c' verwenden, um ein Datum als ISO-Format 8601.

$send_at = date('c', strtotime(self::$row->datetime)); 
+0

Gibt es einen Trick, um die Zeitzone richtig eingestellt, wenn alles, was ich habe, sind Strings wie 'MDT-UTC-7' (Ich glaube, das ist Mountain Time) und CDT-UTC-5 für Central? Ich könnte den letzten Teil der Zeichenfolge analysieren, aber ist PHP Setup diese Kurzzeichenfolgen zu interpretieren? – atwellpub

+1

Sie könnten 'timezone_name_from_abbr' verwenden, um die Zeitzone mit allen oder einem Teil dieser Zeichenfolgen wie' $ timezone = timezone_name_from_abbr ('CDT-UTC-5') 'zu erhalten. Sie müssen möglicherweise die ersten drei Buchstaben analysieren, z. CDT. Sie könnten dann die Zeitzone übergeben, wenn Sie das Datum wie '$ date = new DateTime ('04/01/2016 01:30 ', neue DateTimeZone ($ timezone));'. Dann geben Sie es als ISO 8601 mit '$ date-> format ('c')' aus. – Michael

3

funktioniert Dies ist das Format, das Sie suchen

$send_at = date('c' , strtotime(self::$row->datetime)); 

seine so genannte ISO 8601 date

Ausgabe eines UTC Lage ist 2016-04-22T22:48:10+00:00

EIN nd ja die + -HH: MM ist der Zeitzonenunterschied von UTC, entweder + oder -

Verwandte Themen