PHP удаляет конечные 0 из времени - PullRequest
0 голосов
/ 26 октября 2019

Если у меня есть дата и время, например:

24/10/2019 21:00

  1. Если время 21:01 или что-то отличное от 0, я в порядке сминуты появляются.

  2. Если время заканчивается 00, то я хотел бы, чтобы двоеточие и 0 были удалены.

Есть ли функция php date, чтобы сделать это, или мне нужно сделать какой-нибудь php preg_replace или что-то еще?

Ответы [ 2 ]

1 голос
/ 26 октября 2019

Вы можете использовать str_replace, если у вашей строки даты и времени нет секунд.

str_replace(":00","","24/10/2019 21:00");

Хотя, если у вашей даты и времени есть секунды, вы можете сделать это с помощью

$datetime = "24/10/2019 21:00";
while(substr($datetime,-3) == ':00'){
    $datetime = substr($datetime,0, strlen($datetime) - 3);
}
echo $datetime;
1 голос
/ 26 октября 2019

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

$dateString = '24/10/2019 21:00';

в метку времени или объект DateTime, а затем отформатировать ее условно на основе количества минут.

// Timestamp    
$timestamp = strtotime(str_replace('/', '-', $dateString));
$newDateString = date('d/m/Y H' . ($timestamp % 3600 ? ':i' : ''), $timestamp);

// Or DateTime object
$dateTime = date_create_from_format('d/m/Y H:i', $dateString);
$newDateString = $dateTime->format('d/m/Y H' . ($dateTime->format('i') == 0 ? '' : ':i'));

Но это кажется излишне сложным, когда вы можетепросто удалите завершающий «: 00».

$newDateString = preg_replace('/:00$/', '', $dateString);

Обязательно включите в шаблон $, чтобы он совпадал только с :00 в конце строки.

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