2017-01-17 4 views
0

Я сравниваю часовой пояс и не работаю должным образом.Сравнение Timezone Facing Issue

$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 

Что плохого я делаю здесь?

ответ

0

Хорошо, мне удалось решить свой ответ, но другие ответы слишком приемлемы. Прямо сейчас я использую дополнительную переменную для сравнения 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')); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^