PHP中从DateTime提取日期:如何从数组结果获取纯日期值
解决提取日期字符串中的日期部分问题
嘿,我明白你现在的困扰了——你拿到的是带时间的日期字符串,想用array_slice提取日期部分但没效果对吧?这很正常,因为array_slice是用来操作数组的,而你当前处理的$dateRow[0]是一个字符串类型的日期值,所以这个函数派不上用场。
给你几个简单有效的方法来提取不带时间的日期部分:
方法1:用explode按空格拆分字符串
因为你的日期和时间是用空格分隔的,直接拆分后取第一个元素就行:
$dateRows = $this->get('app')->getDates(); $dateRow = json_decode(json_encode($dateRows[0], true)); // 提取日期部分 $pureDate = explode(' ', $dateRow[0])[0]; dump($pureDate); // 输出:"2014-01-01"
方法2:用substr截取固定长度的字符
如果你的日期格式固定是YYYY-MM-DD HH:MM:SS,那么日期部分正好是前10个字符,直接截取就行:
$dateRows = $this->get('app')->getDates(); $dateRow = json_decode(json_encode($dateRows[0], true)); // 截取前10位字符 $pureDate = substr($dateRow[0], 0, 10); dump($pureDate); // 输出:"2014-01-01"
方法3:用DateTime类处理(更规范的方式)
如果后续可能遇到不同的日期格式,用PHP的日期类来处理会更可靠,还能避免格式变动带来的问题:
$dateRows = $this->get('app')->getDates(); $dateRow = json_decode(json_encode($dateRows[0], true)); // 转换为DateTime对象并格式化 $dateObj = new DateTime($dateRow[0]); $pureDate = $dateObj->format('Y-m-d'); dump($pureDate); // 输出:"2014-01-01"
这三种方法都能解决你的问题,其中前两种适合格式固定的场景,第三种更灵活通用,你可以根据自己的需求选择~
内容的提问来源于stack exchange,提问作者John Soprano
相关产品推荐
相关产品推荐

