преобразовать строку даты и времени возврата API из формата 24 в формат 12 часов в php - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть дата, как показано ниже

17/05/2018 23:59:00 PM

Хранится в базе данных как varchar (100). Я хочу преобразовать это как 17/05/2018 23:59:00 PM. Это возвращается из API. Я пытался исправить, пробовал так много способов. как-то это работает, но наступает завтрашнее свидание, как будто оно даёт сейчас вот так

18/05/2018 11:59

. Есть ли эффективный способ сделать это.

 $startdate='17/05/2018 23:59:00 PM';
$myDateTime = DateTime::createFromFormat('d/m/Y H:i A',$startdate);
$newDateString = $myDateTime->format('d/m/Y h:i A');
echo $newDateString;

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я бы сохранил метку времени в дБ, а не фактическую дату

$startDateTime = DateTime::createFromFormat('d/m/Y H:i:s', '17/05/2018 23:59:00');
$timeStamp = $startDateTime->getTimeStamp();

$date = new DateTime();
$date->setTimestamp($timeStamp);

echo $date->format('d/m/Y h:i:s A');
0 голосов
/ 27 апреля 2018

Вы используете AM / PM и 24-часовой формат. Это не имеет смысла. PHP, вероятно, старается изо всех сил, чтобы понять это, и добавляет 12 часов к дате и переносит их на следующий день.

Если вы игнорируете PM из вашей даты и времени, это прекрасно работает:

$startdate='17/05/2018 23:59:00 PM';
$myDateTime = DateTime::createFromFormat('d/m/Y H:i:s+',$startdate);
$newDateString = $myDateTime->format('d/m/Y h:i:s A');
echo $newDateString;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...