在PHP脚本中,我需要从“2003-01-28 00:00:00”删除00:00:00。无论00:00:00中的数字是多少,如果存在都应该被删除。是否有某种公式(正则表达式可能?)可以检测并删除它?
此外,00:00:00可能并不总是在字符串中。这就是我需要先检测它的原因。
我该怎么做?任何想法或功能?
答案 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)
00:00:00
的位置在这种情况下无关紧要,即使日期之间没有空格。
适用于00:00:00 2003-01-28
和2003-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;
?>
<?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这应该涵盖所有可能的输入。