Câu trả lời được cung cấp bởi Volkerk là chính xác, nhưng nếu bạn thực sự cần một công việc xung quanh hãy xem ví dụ của tôi.
<?php
//default timezone
$date = new DateTime(null);
echo 'Default timezone: '.$date->getTimestamp().'<br />'."\r\n";
//America/New_York
$date = new DateTime(null, new DateTimeZone('America/New_York'));
echo 'America/New_York: '.$date->getTimestamp().'<br />'."\r\n";
//Europe/Amsterdam
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo 'Europe/Amsterdam: '.$date->getTimestamp().'<br />'."\r\n";
echo 'WORK AROUND<br />'."\r\n";
// WORK AROUND
//default timezone
$date = new DateTime(null);
echo 'Default timezone: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";
//America/New_York
$date = new DateTime(null, new DateTimeZone('America/New_York'));
echo 'America/New_York: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";
//Europe/Amsterdam
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo 'Europe/Amsterdam: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n";
?>
Lấy dấu thời gian thường xuyên và thêm UTC bù đắp
Nguồn
2011-12-29 13:15:17
Nó có thể gây nhầm lẫn để sử dụng một workaround như thế này như bạn có nguy cơ nhận được vào tất cả các loại rắc rối với múi giờ vs dấu thời gian unix. Với OP quy định một định dạng đầu ra sẽ tốt hơn khi sử dụng phương thức định dạng DateTime, tức là $ date-> format ('Y-m-d H: i: s') – liquorvicar
Tôi đồng ý với bạn hoàn toàn, và tôi sẽ không khuyến cáo điều này. Lưu trữ dưới dạng dấu thời gian unix sẽ tốt hơn và khi hiển thị dữ liệu chuyển đổi thành múi giờ chính xác. Nếu người dùng sẽ lưu trữ thông tin này trong cơ sở dữ liệu, tôi sẽ loại bỏ định dạng dấu thời gian unix hoàn toàn và đi cho một kiểu cơ sở dữ liệu datetime (vì các datetime/chức năng khác nhau sẽ giúp bạn sống dễ dàng hơn) –
= new DateTime (null, new DateTimeZone ('Philippines')); '. Tôi chỉ muốn nhận được từ PH. – RoCk