2016-03-17 6 views
1

как применять UTC в datestring в php?Как конвертировать datetime, применяя UTC offset в php?

Пример кода:

$sample_date = "2016-01-01 01:00:00 +01:00"; 

Как преобразовать этот в:

$sample_date = "2016-01-01 02:00:00"; 
+0

Странный запрос ... Для чего вам это нужно? '2016-01-01 01:00:00 +01: 00' ==' 2016-01-01 02:00:00 +02: 00', а не '2016-01-01 02: 00: 00' .. –

+0

@ Glavić Да, ваша точка зрения верна, но я хотел бы применить смещение UTC ('+01: 00') к основному дате, которое является' 2016-01-01 01:00:00) ' – ralphjason

+0

Итак, вы говорят, что '2016-01-01 01: 00: 00' является UTC =' +00: 00'? Потому что '+01: 00' не может быть UTC ... –

ответ

0

Один из способов быть, чтобы написать пользовательскую функцию, как показано ниже:

$thisDate = "2016-01-01 01:00:00 +01:00"; 
$seperated = explode('+', $thisDate); 

$splitHours = explode(':',$seperated[1]); 

$hoursToAdd = isset($splitHours[0]) ? (($splitHours[0]!='0' && $splitHours[0]!='00') ? $splitHours[0].'H' : '') : ''; 
$minutesToAdd = isset($splitHours[1]) ? (($splitHours[1]!='0' && $splitHours[1]!='00') ? $splitHours[1].'S' : '') : ''; 

$addtionString = ($splitHours[0]!='' || $splitHours[1]!='') ? 'PT'.$hoursToAdd.$minutesToAdd : ''; 
$date = new DateTime($seperated[0]); 
if($addtionString != '') { 
    $date->add(new DateInterval($addtionString)); 

} 
echo $date->format('Y-m-d H:i:s') . "\n"; 

Не может подумайте о любой встроенной функции, которая уже делает это.

+0

Спасибо, но он возвращает' 2016-01-01 08: 00: 00' вместо '2016-01-01 02: 00: 00' то же самое, что и преобразование' +01: 00' в секундах и добавить, все еще вывод - '2016-01-01 08: 00: 00'. Я не знаю, почему. – ralphjason

+0

Извините, просто неправильно понял ваш вопрос. Посмотрите на обновленные ан. –

0

Вы получите результат ниже

$date = date('Y-m-d H:i:s',(strtotime($sample_date)+3600));      
echo $date;