Đầu tiên, bạn cần khởi tạo đối tượng datetime với múi giờ ban đầu. Sau đó, sau khi đối tượng datetime được khởi tạo, hãy điều chỉnh múi giờ bằng DateTime::setTimezone()
.
Xem mã này, nơi tôi đã sử dụng Asia/Hong_Kong làm ví dụ múi giờ GMT + 8:
$time = "2012-11-07 15:05:26"; // fetch from database
$date = new DateTime($time,new DateTimeZone('Asia/Hong_Kong'));
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
echo $date->format('Y-m-d H:i:s'); // yields 2012-11-07 08:05:26
Nếu tất cả các ngày ban đầu luôn có nghĩa nhất quán là GMT + 8 và ứng dụng PHP của bạn cũng được đặt để sử dụng GMT + 8 (được đặt bằng date_default_timezone_set()
, chẳng hạn), không cần phải chuyển DateTimeZone ban đầu đối tượng, dưới dạng DateTime mới được tạo các đối tượng sẽ tự động được tạo với múi giờ đó.