Làm cách nào để lấy ngày được lưu trữ, như 2011-01-30 18:23:49 và điều chỉnh múi giờ đó cho bất kỳ múi giờ đã chọn nào? Có một cách đơn giản như chỉ đơn giản là xác định múi giờ bằng cách viết tắt hoặc cộng/trừ x số giờ? Về cơ bản tôi muốn người dùng có thể chọn múi giờ của họ và ngày mặc định này được điều chỉnh để phù hợp với họ.điều chỉnh múi giờ
Trả lời
Có người dùng chọn múi giờ của họ
Sử dụng tên vùng hoặc bù đắp với
date_default_timezone_set
để thiết lập múi giờ mặc định được sử dụng trong hàm ngày tháng trong suốt phần còn lại của thi kịch bản.Sử dụng
date('Z')
để nhận được rằng múi giờ bù đắp từ giờ chỉ trong vài giâyChuyển đổi ngày lưu trữ của bạn đến một timestamp với
strtotime
- UNIX timestamps luôn GMT, vì vậy bây giờ bạn có thời gian trong giờ GMT.Thêm chênh lệch từ bước 3 để chuyển đổi thời gian đó thành múi giờ của người dùng.
Sử dụng lại
date
để định dạng dấu thời gian dưới dạng chuỗi ở định dạng hiển thị mong muốn.
Ví dụ:
$user_timezone = 'America/Los_Angeles';
$stored_time = '2011-01-30 18:23:49';
date_default_timezone_set($user_timezone);
$timestamp = strtotime($stored_time);
$local_timestamp = $timestamp + date('Z');
$local_date = date('Y-m-d H:i:s', $local_timestamp);
echo $local_date;
Ở đây có giải pháp của tôi. Tôi đã thử nghiệm nó với America/Los_Angeles làm múi giờ của máy chủ và múi giờ của tôi với tư cách người dùng. Tôi giả sử rằng thời gian được lưu trữ bằng múi giờ của máy chủ.
<?php
// My (user) timezone
$user_timezone = 'Europe/Berlin';
// Server timezone
$stored_timezone = 'America/Los_Angeles';
// Date/Time stored in your DB, using timezone of the server (yours, that is)
$stored_datetime = '2011-01-29 22:40:00'; // this is the current time in L.A.
// Setting default to servers timezone if not done before
date_default_timezone_set($stored_timezone);
// converting to unix timestamp
$stored_timestamp = strtotime($stored_datetime);
// setting default to users timezone
date_default_timezone_set($user_timezone);
// converting to timestamp
$user_datetime = date('Y-m-d H:i:s', $stored_timestamp);
// setting default back to servers timezone
date_default_timezone_set($stored_timezone);
echo $user_datetime; // output is my current time
- 1. Điều chỉnh múi giờ theo thời gian
- 2. Nhận NSDate từ NSDate được điều chỉnh theo múi giờ
- 3. Điều chỉnh múi giờ trong PHP với DateTime/DateTimeZone
- 4. Nhận múi giờ từ DateTime
- 5. Múi giờ cho Firebase.ServerValue.TIMESTAMP
- 6. Viết tắt múi giờ
- 7. NSDate - Offsetting Múi giờ
- 8. Django: vấn đề múi giờ
- 9. Múi giờ bằng Python
- 10. Java GregorianCalendar múi giờ
- 11. Ngày giờ Mysql với múi giờ
- 12. Nhận ngày giờ cho múi giờ khác Bất kể múi giờ địa phương
- 13. Cách chuyển đổi ngày giờ từ múi giờ này sang múi giờ khác
- 14. Giờ clock_gettime là giờ UTC hay múi giờ địa phương?
- 15. được sử dụng múi giờ
- 16. Tính toán múi giờ Joda
- 17. Cài đặt múi giờ oozie
- 18. postgres múi giờ mặc định
- 19. Python strptime() và múi giờ?
- 20. ExtJS ngày và múi giờ
- 21. Lấy múi giờ trong android
- 22. có bao nhiêu múi giờ?
- 23. Twitter - Múi giờ của Tweeet
- 24. DateTime.Ticks, DateTime.Equals và múi giờ
- 25. Ngày PostgreSQL() với múi giờ
- 26. Định dạng múi giờ datetime
- 27. Định dạng chuỗi ngày giờ mặc định với múi giờ
- 28. PHP - strtotime, chỉ định múi giờ
- 29. Lấy đúng múi giờ bù đắp bằng Python sử dụng múi giờ địa phương
- 30. Múi giờ cài đặt theo lập trình chỉ hoạt động cho các múi giờ + UTC
thể trùng lặp của [Điều chỉnh múi giờ trong PHP với DateTime/DateTimeZone] (http://stackoverflow.com/questions/1445087/adjusting-time-zone-in-php-with-datetime-datetimezone) –