2009-06-09 45 views
8

Khi tôi sử dụng current_timestamp với MySQL, tôi nhận được thời gian chính xác, nhưng khi tôi sử dụngthời gian mysql và thời gian php không giống nhau

$mysqldate = date('Y-m-d H:i:s');

tôi nhận được ngày với trường hợp chậm trễ giờ (ví dụ: 4 : 42 PM là 5:42 chiều). Tôi hiểu rằng cả hai chức năng sử dụng thời gian địa phương của máy chủ - ai đó có thể giải thích sự khác biệt?

Cảm ơn.

+1

Bạn chắc chắn MySQL và PHP của bạn đang trên cùng một máy chủ, phải không? Một số máy chủ đặt MySQL trên một máy chủ khác. – ceejayoz

Trả lời

9

Thời gian hệ thống toàn cầu sẽ được thiết lập thông qua các file/etc/localtime, đó sẽ là một trong hai liên kết tượng trưng một hoặc một bản sao của một tệp vùng từ/usr/share/zoneinfo/trên hầu hết các hệ thống. Các ứng dụng sẽ sử dụng nó làm mặc định của chúng.

PHP có thể ghi đè này trong một vài cách khác nhau:

  1. date.timezone trong php.ini
  2. thiết lập các biến môi trường TZ, ví dụ putenv("TZ=US/Central");
  3. date_default_timezone_set chức năng (trong PHP> = 5.1.0)

MySQL có thể ghi đè này bằng cách chạy các truy vấn sau đây ngay lập tức sau khi kết nối:

SET time_zone = 'US/Central' 
1

Có lẽ máy chủ PHP của bạn nghĩ rằng nó là ở một múi giờ khác nhau hoặc nó sử dụng địa phương khác nhau và ánh sáng ban ngày tiết kiệm thời gian quy định.

+0

làm thế nào để tôi nhận được PHP để cung cấp cho tôi thời gian máy chủ mặc định được liệt kê trên máy tính của máy chủ? Date.timezone của PHP chưa được đặt – daniel

2

Có các cài đặt locale php, phải mất nó từ php.ini, không phải từ thời gian hệ thống

Các vấn đề liên quan