2011-02-15 44 views
8

Tôi có một dự án PHP, nơi tôi cần hiển thị thời gian và ngày khi user1 gửi tin nhắn cho người dùng khác, user2. Khi user2 mở thời gian và ngày nhắn tin này phải được hiển thị theo múi giờ của anh ta.Chuyển đổi ngày giờ thành GMT và ngược lại trong PHP .....?

Vì cả hai người dùng thuộc múi giờ khác nhau, nó hiển thị cùng ngày và giờ mà USER1 đã nhập.

Ví dụ: Nếu User1 gửi thư vào ngày 15 tháng 2 năm 2011 lúc 11:30 sáng theo múi giờ của mình và User2 sẽ mở thư này thì ngày và giờ phải được hiển thị theo múi giờ của anh ấy. Giả sử User2 thuộc về Ấn Độ (GMT + 5: 30) thì nó hiển thị Message Sent tại 15-Feb-2011, 04:30 PM.

Nhưng nó hiển thị 15-Feb-2011, 11:30 AM là sai.

Trả lời

1

Hãy thử mã này:

$tmp_date = new Zend_Date(); 
$tmp_date->setTimezone($user1_timezone); 
$tmp_date->set($date , $user1_date_format); 
$tmp_date->setTimezone($user2_timezone); 
$user2_date = $tmp_date->toString($user2_date_format); 

tôi sử dụng này thành công để chuyển đổi localtime để UTC.

Best Regards, SWilk

1

Bạn có thể sử dụng date_create và date_timezone_set. Ví dụ:

$mydate = date_create('2014-03-27 10:00', timezone_open('Europe/London')); 
date_timezone_set($mydate, timezone_open('Europe/Athens')); 
echo date_format($mydate, 'Y-m-d H:i:s') . "\n"; 

chí đầu ra:

2014-03-27 12:00:00 
1

Bạn có thể làm điều này trong MySQL cũng như:

SELECT CONVERT_TZ(your_column,"Europe/London","Europe/Paris") FROM table1; 

tôi muốn đề nghị bạn lưu trữ tất cả thông tin thời gian/ngày trong UTC và chuyển đổi khi trình bày thông tin cho người dùng. Cho dù bạn làm điều này trong MySQL hay PHP phụ thuộc vào thiết kế ứng dụng.

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