2017-04-19 5 views
0

私はmeridianでdatetimeに文字列を変換しようとしていますが、datetimeが間違っています。
ここ が私のコードです:デバッグ($日付)のためのphpのdatetimeとzone

$timeZone = 'Europe/Warsaw'; 
date_default_timezone_set($timeZone); 
$millis = 1540399680000; 
$seconds = $millis/1000; 
$date = date("d/m/Y H:i:s a", $seconds); 
debug($date); 
$timeZone = new DateTimeZone('Europe/Warsaw'); 
$formato = "d/m/Y H:i:s a"; 
$fecha = DateTime::createFromFormat($formato, $date, $timeZone); 
debug($fecha); 
debug($fecha->format('Y')); 
debug($fecha->format('a')); 

結果

24/10/2018 18:48:00 pm 

結果デバッグ($のfecha)のために私は期待してい何

object(DateTime) { 
    date => '2018-10-25 06:48:00.000000' 
    timezone_type => (int) 3 
    timezone => 'Europe/Warsaw' 
} 

は(デバッグであります$ fecha); date => '2018-10-24 06:48:00.000000'

+1

何を得ることができますか? – alistaircol

+0

'$ fecha'はdatetimeオブジェクトですが、必要に応じてフォーマットすることができます。 – tarikul05

+0

'debug($ fecha-> ​​format( 'd/m/Y H:i:s a'));'それはあなたの希望する解決策を与えるでしょう – tarikul05

答えて

-1

ドキュメント(http://php.net/manual/en/datetime.createfromformat.php)に基づいて、DateTime createFormFormat関数はDateTimeオブジェクトを返します。直接出力を取得する場合は、このコードに従ってください。

$timeZone = 'Europe/Warsaw'; 
date_default_timezone_set($timeZone); 
$millis = 1540399680000; 
$seconds = $millis/1000; 
$date = date("d/m/Y H:i:s a", $seconds); 
debug($date); 
$timeZone = new DateTimeZone('Europe/Warsaw'); 
$formato = "d/m/Y H:i:s a"; 
// instead of this 
//$fecha = DateTime::createFromFormat($formato, $date, $timeZone); 
// add ->format in the end 
$fecha = DateTime::createFromFormat($formato, $date, $timeZone)->format($formato); 
debug($fecha); 
0

は、あなたがCakeTime::format()を使用しようとしたことがありますか? F.ex .:

$date = CakeTime::format($seconds, 'd/m/Y H:i:s a', false, 'Europe/Warsaw'); 
debug($date);