Как написать одну функцию для получения разных часовых поясов в PHP? - PullRequest
1 голос
/ 29 марта 2011

Я создаю скрипт, который позволяет пользователю выбирать свой часовой пояс ... и введите дату $ time..Таким образом, введенные пользователем дата / время должны быть преобразованы в формат GMT при сохранении в базе данных. При извлечении из базы данных он должен быть снова преобразован в исходный формат. Здесь также должна быть включена концепция DST.

Так что здесь дата может быть в переменной, которая может быть строкой или массивом (также многомерный массив) Поэтому я попробовал вот так .....

function ConvertOneTimezoneToAnotherTimezone($time,$currentTimezone,$timezoneRequired)
{

    $current_zone = new DateTimeZone($currentTimezone);
    //$gmt = new DateTimeZone('GMT');

    $date = new DateTime($time, $current_zone);
    //$date->setTimezone($gmt);
    $date->setTimezone(new DateTimeZone($timezoneRequired));

    return  $date->format('Y-m-d H:i:s');

 // Convert it back to Original timezone
     $date->setTimezone($current_zone);
     return  $date->format('Y-m-d H:i:s');
 }

 $time='2011-03-29 11:15:00.000';

 echo  "Current Date/Time is=".ConvertOneTimezoneToAnotherTimezone($time,'Asia/Kolkata','America/New_York');

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

Ответы [ 2 ]

0 голосов
/ 29 марта 2011
<?php

function ConvertOneTimezoneToAnotherTimezone($originalDateTime, $originalTimeZone, $targetTimeZone) {
    $format   = 'Y-m-d H:i:s';

    $dateTime = new DateTime($originalDateTime, new DateTimeZone($originalTimeZone));
    $original = $dateTime->format($format);

    $dateTime->setTimezone(new DateTimeZone($targetTimeZone));
    $target   = $dateTime->format($format);

    return compact('original', 'target');
}

$dateTime  = '2011-03-29 11:15:00.000';
$converted = ConvertOneTimezoneToAnotherTimezone($dateTime,'Asia/Kolkata','America/New_York');

echo sprintf('Original  Date/Time is=%s', $converted['original']), PHP_EOL;
echo sprintf('Converted Date/Time is=%s', $converted['target']), PHP_EOL;
0 голосов
/ 29 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...