PHP从字符串中删除时间戳

时间:2013-08-27 02:49:36

标签: php timestamp strip

在PHP脚本中,我需要从“2003-01-28 00:00:00”删除00:00:00。无论00:00:00中的数字是多少,如果存在都应该被删除。是否有某种公式(正则表达式可能?)可以检测并删除它?

此外,00:00:00可能并不总是在字符串中。这就是我需要先检测它的原因。

我该怎么做?任何想法或功能?

5 个答案:

答案 0 :(得分:3)

由于日期的长度始终是固定的。您可以使用substr

// With 00:00:00
$date = '2003-01-2800:00:00';
echo substr($date, 0, 10) . '<br>';

// Without 00:00:00
$date = '2003-01-28';
echo substr($date, 0, 10) . '<br>'; 

// With other time part
$date = '2003-01-2812:00:11';
echo substr($date, 0, 10);          

答案 1 :(得分:1)

您可以使用简单的explode或注释substr中所述,但如果您不知道如何根据您更新的帖子将字符串格式化为更复杂的date('Y-m-d', strtotime($mytime)) ...

$newdate = substr($olddate,0,10);

答案 2 :(得分:1)

也许您可以使用函数“date()”来格式化时间戳

<?php
$my_date = "2003-01-28 00:00:00";
$new_date = date("Y-m-d", time($my_date));
var_dump($new_date);

答案 3 :(得分:0)

编辑#2(使用str_replace)

00:00:00的位置在这种情况下无关紧要,即使日期之间没有空格。

适用于00:00:00 2003-01-282003-01-28 00:00:00以及2003-01-2800:00:00

<?php

$if_date_null = "00:00:00";

$replace = ""; // replace with nothing

// doesn't matter the position of 00:00:00
$dates = "00:00:00 2003-01-28";
// $dates = "2003-01-28 00:00:00";

$result = str_replace($if_date_null,$replace,$dates);

echo $result;

?>

编辑#1

<?php

$date = "2003-01-28";

$date_null = "00:00:00";

if (strpos($date_null,'00:00:00') !== false) {
    echo '00:00:00 found ';
}

else {

echo "No ZEROS found ";

}


?>

原始答案

这将回显2003-01-28并且不包括2003-01-28和00:00:00之间的空间

<?php

echo substr("2003-01-28 00:00:00",0,-9);

?>

您还可以将日期指定为变量,如下所示:(将产生相同的结果)并在需要时在其他位置使用该变量。

<?php

$date = "2003-01-28";
echo substr("$date 00:00:00",0,-9);

?>

答案 4 :(得分:0)

您的传入数据是日期字符串,因此请将其视为此类并使用DateTime进行操作。您的解决方案可以简单: -

$dateString = (new \DateTime('2003-01-28 00:00:00'))->format('Y-m-d');
//$dateString now === '2003-01-28'

即使缺少时间部分(00:00:00),这也会有效。即使日期和时间之间没有空格。

As you can see这应该涵盖所有可能的输入。