как преобразовать форматы даты php в GMT и наоборот?

Я новичок в php. Я хочу написать функцию, в которой мне нужен пользователь, чтобы ввести дату в любом формате даты, включая DST, в формат GMT и снова позже в исходный введенный формат. Если любой орган мне поможет.

Solutions Collecting From Web of "как преобразовать форматы даты php в GMT и наоборот?"

Хотя функции gmdate доступны. Если вы используете PHP 5.2 или выше, подумайте об использовании объекта DateTime .

Вот код для переключения на GMT

$date = new DateTime(); $date->setTimezone(new DateTimeZone('GMT')); 

и вернуться к часовому поясу по умолчанию …

 $date = new DateTime('2011-01-01', new DateTimeZone('GMT')); $date->setTimezone(new DateTimeZone(date_default_timezone_get())); 

Использование объекта DateTime позволяет создать дату-время, как и процедурные функции, за исключением того, что вы сохраняете ссылку на экземпляр.

например

 // 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('Ymd H:i:s'); // Just to show of some more, get the previous Sunday $date->modify('previous Sunday'); 

Существует множество функций, которые вы можете использовать, которые более читабельны, чем процедурные функции.


Явный пример перехода от часового пояса к 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('Ymd 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('Ymd H:i:s'); - $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('Ymd 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('Ymd H:i:s'); - $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('Ymd 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('Ymd H:i:s'); 

Использование вашей Азии / Калькутты в Америку / 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("Ymd H:i:s"); //Outputs: 2011-03-28 03:30:00 

Используйте функцию gmdate для преобразования в GMT.

Например

 $d = '2011-03-28 12:05:20'; $gmt = gmdate('Ymd H:i:s',strtotime($d)); 

// Преобразование локального времени в gmt

  public function convertTime($timezone,$time){ $selectedtime = date("Ymd H:i",strtotime($time)); $date = new DateTime($selectedtime, new DateTimeZone($timezone)); $date->setTimezone(new DateTimeZone('GMT')); $convertedtime = strtotime($date->format('Ymd H:i')); return $convertedtime; }