PHP从时间删除尾随0

时间:2019-10-25 22:40:58

标签: php string datetime time

如果我有一个类似的日期时间:

24/10/2019 21:00

  1. 如果时间是21:01或0以外的任何时间,则可以显示分钟。

  2. 如果时间到00结束,那么我希望将冒号和0删除。

是否有一个php date函数可以做到这一点,还是我需要做一些php preg_replace之类的事情?

2 个答案:

答案 0 :(得分:1)

据我所知,没有自动执行此操作的功能。您可以转换字符串

$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相匹配。

答案 1 :(得分:1)

如果日期时间字符串没有秒数,则可以使用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;