Сравнение Часового Пояса Проблема

Я сравниваю часовой пояс и не работаю, как ожидалось.

$input_start_time = DateTime::createFromFormat('Y-m-d H:i:s','2017-01-17 08:00:00');
$input_start_time->setTimezone(new DateTimeZone("UTC"));

$input_end_time = DateTime::createFromFormat('Y-m-d H:i:s','2017-01-17 20:00:00');
$input_end_time->setTimezone(new DateTimeZone("UTC"));

$current_date = new DateTime("Asia/Seoul");

print_r($input_start_time);
print_r($input_end_time);
print_r($current_date);

while($input_start_time <= $input_end_time)
{
    if($input_start_time <= $current_date)
    {
        echo $input_start_time->format('h:i A').PHP_EOL;
    }
    $input_start_time->add(new DateInterval('PT30M'));
}

Здесь я сохраняю данные в UTCформате и должен сравнить, что в другомtimezone, то Asia/Seoulесть, но я, возможно, делаю это неправильно, кажется. В настоящее время он дает мне выход как как

DateTime Object
(
    [date] => 2017-01-17 07:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)
DateTime Object
(
    [date] => 2017-01-17 19:00:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)
DateTime Object
(
    [date] => 2017-01-17 18:19:03.000000
    [timezone_type] => 3
    [timezone] => Asia/Seoul
)
07:00 AM
07:30 AM
08:00 AM
08:30 AM
09:00 AM

Все хорошо, но мне нужно получить результат, как

07:00 AM
07:30 AM
08:00 AM
08:30 AM
09:00 AM
.....
06:00 PM
06:30 PM

Что не так я делаю здесь?

1 ответ

  1. Хорошо, мне удалось решить мой ответ, но другие ответы слишком приемлемы. Прямо сейчас я использую дополнительную переменную для сравнения datetimeобъекта как

    $input_start_time = DateTime::createFromFormat('Y-m-d H:i:s','2017-01-17 08:00:00');
    $input_start_time->setTimezone(new DateTimeZone("UTC"));
    
    $input_end_time = DateTime::createFromFormat('Y-m-d H:i:s','2017-01-17 20:00:00');
    $input_end_time->setTimezone(new DateTimeZone("UTC"));
    
    $current_date_timezone = new DateTime("Asia/Seoul");
    $current_data = new DateTime($current_date_timezone->format('Y-m-d H:i:s')); // get the `Asia/Seoul` current time within UTC and comparing this object
    
    while($input_start_time <= $input_end_time)
    {
        if($input_start_time <= $current_date)
        {
            echo $input_start_time->format('h:i A').PHP_EOL;
        }
        $input_start_time->add(new DateInterval('PT30M'));
    }