2010-08-29 38 views
19

trên vỏ, thời gian máy chủ của tôi là (đơn giản date trong bash): Sun Tháng Tám 29 10:37:12 EDT 2010get thời gian máy chủ trong php - múi giờ hành

khi tôi chạy mã php -r "echo date('Y-m-d H:i:s');" tôi nhận được: 2010 -08-29 10:37:10

nhưng khi tôi thực thi tập lệnh php có echo date('Y-m-d H:i:s'); tôi nhận được thời gian khác - vì php cho rằng múi giờ là UTC (giờ máy chủ là EDT).

Tệp php.ini của tôi không có bộ múi giờ và tôi không muốn thay đổi bất kỳ thứ gì vì tôi không biết điều gì sẽ ảnh hưởng đến các trang web khác chạy trên máy chủ này.

Có cách nào đơn giản để có được thời gian máy chủ tại múi giờ được đặt cho máy chủ không?

Trả lời

14

Theo trang hướng dẫn php.ini directives, múi giờ không được đặt theo mặc định nếu bạn đang sử dụng phiên bản trước 5.3. Sau đó, nếu bạn có một cái nhìn vào trang giấy cho date_default_timezone_get, nó sử dụng theo trình tự sau để nhận được múi giờ:

* Reading the timezone set using the date_default_timezone_set() function (if any) 
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0) 
* Reading the value of the date.timezone ini option (if set) 
* Querying the host operating system (if supported and allowed by the OS) 

UTC là mặc định nếu tất cả những thất bại, do đó có thể là một điểm khởi đầu tốt.

2

Máy chủ phải luôn là có múi giờ được chỉ định trong tệp php.ini. PHP 5.3 thậm chí tăng thông báo nếu không phải như vậy và phần mở rộng DateTime sẽ ném ngoại lệ nếu bạn cố gắng xây dựng các đối tượng mà không chỉ định rõ ràng múi giờ (với đối tượng DateTimezone) hoặc có một mặc định (hoặc thông qua date.timezone hoặc date_default_timezone_set).

Bởi những gì bạn đang mô tả, các kịch bản nhiều khả năng nhất là:

  • file php.ini khác nhau đang được sử dụng trong hai kịch bản. Trong trường hợp đầu tiên, không có múi giờ mặc định nào được chỉ định, do đó PHP cố gắng suy ra một múi giờ từ múi giờ trên toàn hệ thống của máy.
  • Tập lệnh (thứ hai) gọi date_default_timezone_set('UTC') hoặc tương đương.
2

trễ cho bữa tiệc, nhưng nếu bạn muốn thiết lập múi giờ mà không cần chỉnh sửa php.ini, bạn có thể đặt trong mã php một của các chuỗi này:

date_default_timezone_set('GMT'); 
date_default_timezone_set('Europe/Zurich'); 
date_default_timezone_set('America/New_York'); 
Các vấn đề liên quan