tôi mới dùng php. tôi muốn viết một chức năng mà tôi cần người dùng nhập ngày ở bất kỳ định dạng ngày nào kể cả DST, sang định dạng GMT và một lần nữa sau đó trở lại định dạng đã nhập ban đầu.xin vui lòng bất kỳ cơ thể nào giúp tôi.làm thế nào để chuyển đổi định dạng ngày php sang GMT và ngược lại?
Trả lời
Mặc dù chức năng gmdate có sẵn. Nếu bạn đang sử dụng PHP 5.2 trở lên, hãy xem xét sử dụng đối tượng DateTime.
Dưới đây là code để chuyển sang giờ GMT
$date = new DateTime();
$date->setTimezone(new DateTimeZone('GMT'));
và trở lại múi giờ mặc định ...
$date = new DateTime('2011-01-01', new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));
Sử dụng các đối tượng DateTime cho phép tạo của bạn một datetime, giống như thủ tục các hàm, ngoại trừ việc bạn giữ một tham chiếu đến một cá thể.
ví dụ:
// Get a reference to Christmas of 2011, at lunch time.
$date = new DateTime('2011-12-25 13:00:00');
// Print the date for people to see, in whatever format we specify.
echo $date->format('D jS M y');
// Change the timezone to GMT.
$date->setTimezone(new DateTimeZone('GMT'));
// Now print the date/time it would in the GMT timezone
// as opposed to the default timezone it was created with.
echo $date->format('Y-m-d H:i:s');
// Just to show of some more, get the previous Sunday
$date->modify('previous Sunday');
Có rất nhiều chức năng bạn có thể sử dụng, dễ đọc hơn nhiều so với chức năng thủ tục.
dụ Explicit chuyển đổi từ một múi giờ lấy múi giờ GMT
$melbourne = new DateTimeZone('Australia/Melbourne');
$gmt = new DateTimeZone('GMT');
$date = new DateTime('2011-12-25 00:00:00', $melbourne);
$date->setTimezone($gmt);
echo $date->format('Y-m-d H:i:s');
// Output: 2011-12-24 13:00:00
// At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT.
echo '<br/>';
// Convert it back to Australia/Melbourne
$date->setTimezone($melbourne);
echo $date->format('Y-m-d H:i:s');
Sử dụng của bạn châu Á/Kolkata để America/New_York
date_default_timezone_set('Asia/Kolkata');
$date = new DateTime('2011-03-28 13:00:00');
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format("Y-m-d H:i:s");
//Outputs: 2011-03-28 03:30:00
nhờ jcob ...... nhưng xin vui lòng u có thể đăng một số ví dụ như thế nào chính xác nó hoạt động ............ – 0001
@ 0001 cập nhật với một số ví dụ. – Jacob
cảm ơn u rất nhiều jcob ...... nhưng tôi đang nhận nhầm lẫn ở đây ........ làm thế nào ví dụ của bạn sẽ giúp tôi trong câu hỏi của tôi ...... ?? – 0001
Sử dụng gmdate function để chuyển đổi thành giờ GMT.
Ví dụ
$d = '2011-03-28 12:05:20';
$gmt = gmdate('Y-m-d H:i:s',strtotime($d));
khi tôi cung cấp ngày như '2013-07-03 16:00 IST ', tôi nhận được ngày sai – lalith458
// Chuyển đổi theo giờ địa phương lấy múi giờ GMT
public function convertTime($timezone,$time){
$selectedtime = date("Y-m-d H:i",strtotime($time));
$date = new DateTime($selectedtime, new DateTimeZone($timezone));
$date->setTimezone(new DateTimeZone('GMT'));
$convertedtime = strtotime($date->format('Y-m-d H:i'));
return $convertedtime;
}
đọc hướng dẫn sử dụng php cho [date] (http://in2.php.net/manual/en/function.date.php) và ví dụ được gán – diEcho