2016-04-07 14 views
0

Ich möchte einen Echtzeitstempel der angegebenen Zeit in der angegebenen Zeitzone für die Verwendung im Frontend erhalten.Carbon Zeitzone erhalten Zeitstempel

Momentan kann ich eine Zeitzone einstellen und bekomme die Zeit dafür. Aber ich kann keinen neuen Zeitstempel bekommen.

Carbon::setToStringFormat('U'); // Set __toString format 
$instance = Carbon::createFromTimestamp('1460014482', "Europe/Kiev"); // Set global server timezone (or pickup from default PHP setting) 
$instance->setTimezone("Indian/Maldives"); // Set user timezone 

var_dump($instance->format('d M Y H:i:s')); // Shows the correct time +2 hours from Europe/Kiev 

var_dump((string)$instance); // Shows the same timestamp specified in createFromTimestamp 

var_dump(date('d M Y H:i:s', (string)$instance)) // So it won't show the timezone datetime 

Erklären Sie, wie ich einen Zeitstempel der Zeit für eine bestimmte Zeitzone erhalten kann. Danke!

Antwort

0

Sie müssen die Funktion createFromFormat verwenden, um setTimezone zu verwenden. Hier ist ein Beispiel für Ihren Code:

$originalDate = date("Y-m-d H:i:s", '1460014482'); 
$instance = Carbon::createFromFormat('Y-m-d H:i:s', $originalDate, 'Europe/Kiev'); 
$instance->setTimezone("Indian/Maldives"); 

Ich hoffe, es hilft.

+0

Es hat nicht funktioniert. Resultierende Zeitstempel gleich. – Alex

0

Ich weiß, es ist keine vollständige Lösung. Aber es funktioniert für meine Anforderungen. Derzeit müssen __toString Methode der Carbon-Klasse überschrieben werden, die ich verwende, um Datum Zeitstempel anzuzeigen.

public function __toString() 
{ 
    return static::$toStringFormat == 'U' ? (string)strtotime($this->format('Y-m-d H:i:s')) : $this->format(static::$toStringFormat); 
} 
Verwandte Themen