2016-07-11 2 views
2

У меня есть форма, которая представляет как дату и время, и я хочу, чтобы создать \ объект DateTime на основе этих значенийСоздание DateTime из строки даты и времени строки

Значение $submission['time'] выглядит следующим образом: «T09: 45:00'

значение $submission['date'] выглядит следующим образом: '2016-07-11'

Я пытался

var_dump(\DateTime::createFromFormat(
    'Y-m-d TH:i:s', $reportArray['date'] . ' ' . $reportArray['time']) 
); // also tried without 'T' (TH:i:s) 

Однако это сломал скрипт.

Есть ли простой способ создать объект \ DateTime из одной строки даты и одной временной строки?

+0

Я думаю, что «T» в начале строки времени является проблемой. Это когда-нибудь меняется? Что оно делает? –

+0

Я думаю, что это указывает на летнее время @KIKOSoftware, на самом деле я не думаю, что это правильно. –

+1

Да, 'T' в формате представляет собой часовой пояс, а не« T ». Вы можете попробовать этот формат: '' Y-m-d \ TH: i: s''. Обратная косая черта пропускает «T» до буквального «T». О, и вам действительно не нужно добавлять в пространство. –

ответ

2

«T», который вы использовали в формате, представляет собой часовой пояс, а не буквальный «T». Вы можете использовать этот формат: 'Y-m-d\TH:i:s'. Обратная косая черта пропускает «T» до буквального «T». Я оставил пространство, потому что он вам не нужен. Например:

var_dump(\DateTime::createFromFormat(
    'Y-m-d\TH:i:s', $reportArray['date'] . $reportArray['time']) 
); 

Этот ответ, конечно, предполагает, что «Т» всегда существует и никогда не изменяется.

+0

Не нужно использовать 'createFromFormat()' с таким видом ввода; это совершенно допустимый ввод, поэтому просто используйте 'new DateTime()': [demo] (https://eval.in/603415). –

0

Попробуйте

<?php 
$d1=$submission['date']='2016-07-11'; 
$t1=$submission['time']='T09:45:00'; 
$con=$d1.$t1; 
$displaytime=date('d-m-Y H:i:s A',strtotime($con)); 
echo $displaytime; 
?> 

Он будет дает выход как: 11-07-2016 09:45:00 AM который вы хотели.

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