Nedir DateTime nesne ile yanlış

4 Cevap php

Herkes koduyla yanlış olduğunu söyleyebilirim.

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone));
$date = $date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s');

hata: olmayan bir nesne üzerinde bir üye işlev biçimi () Çağrı

4 Cevap

$date = $date->setTimezone(new DateTimeZone('GMT'));

$ Tarih değişkeni null 'yapar, sadece onu aramak gerekir:

$date->setTimezone(new DateTimeZone('GMT'));

Eğer (mutlaka sormadan önce okumak the manual yazılı olarak, değil mi?) En az PHP 5.3.0 çalıştırıyorsanız değilseniz, setTimezone yerine modifiye DateTime null dönecektir . En az PHP 5.3.0 çalıştırıyor musunuz?

Göre bu zaman dilimini değil, eğer manual, setTimeZone bir DateTime nesne ya da bir FALSE ya dönecektir. Bu değişiklik olacak çünkü geri dönüşü tasarrufu DateTime bunu geçmek nesne aslında gereksizdir.

Belki setTimezone dönüş değeri için $date nesnesi ayarlamadan önce başarılı olup olmadığını kontrol etmelisiniz:

$timezone = "Asia/Karachi";
$date = new DateTime($when_to_send, new DateTimeZone($timezone));

if (! ($date && $date->setTimezone(new DateTimeZone('GMT'))) ) {
    # unable to adjust from local timezone to GMT!
    # (display a warning)
}

$when_to_send = $date->format('Y-m-d H:i:s');

Sadece yardım değil, herkes için teşekkürler doğru cevap işaretlenmiş olabilir. Doğru kodu

$timezone = "Asia/Karachi"; 
$date = new DateTime($when_to_send, new DateTimeZone($timezone));
$date->setTimezone(new DateTimeZone('GMT')); 
$when_to_send = $date->format('Y-m-d H:i:s');