在php中从普通字符串检索日期
我有一个外部XML文件url,因此需要从该XML数据导入数据。不幸的是,在xml数据中,日程日期值不正确,例如:20082020,但它应该是20/08/2020或任何正确的日期值在php中从普通字符串检索日期,php,wordpress,Php,Wordpress,我有一个外部XML文件url,因此需要从该XML数据导入数据。不幸的是,在xml数据中,日程日期值不正确,例如:20082020,但它应该是20/08/2020或任何正确的日期值 我没有机会访问XML,所以,我需要做的就是在PHP中检索从“20082020”到“20/08/2020”或“20-08-2020”的正确日期格式 20082020 => 20-08-2020 但是我需要推进我的项目,所以我使用了简单的正则表达式。所以,任何人都需要它 $date = '20082020'; ec
我没有机会访问XML,所以,我需要做的就是在PHP中检索从“20082020”到“20/08/2020”或“20-08-2020”的正确日期格式
20082020 => 20-08-2020
但是我需要推进我的项目,所以我使用了简单的正则表达式。所以,任何人都需要它
$date = '20082020';
echo preg_replace('/^(\d{2})(\d{2})(\d{4})$/', '$1-$2-$3', $date);
我不确定这是否是修复此问题的最佳方法,因此,任何有更好想法的人都可以自由共享。如果此XML文件中的日期始终采用此格式(ddmmyyy),您可以按如下方式重新格式化:
$col_date = '20082020';
$real_date = date_parse( preg_replace('|(\d{2})(\d{2})(\d{4})|', '\1-\2-\3', $col_date) );
不,正如您所看到的php strotime或任何其他假定将字符串转换为日期格式的函数不使用此字符串值。我已经尝试过:)“不,正如您所看到的php strotime[…]”-正如您所看到的,在该问题下发布了多个答案…使用
DateTime::createFromFormat
,这是微不足道的。“也许我用了不正确的方法”——这就是为什么你向我们展示你的尝试,而不是说“不”或“不起作用”是很重要的DateTime::createFromFormat('dmY','20082020')
将其解析为DateTime实例,然后您可以使用该实例再次输出您喜欢的任何日期格式。我很乐意使用@CBroe的答案/注释-这是迄今为止您在这里找到的最干净的答案。啊,我明白了,我不知道实际上没有任何XML方面的经验,同样感谢您提供的信息和解决方案:)如果您可以使用简单的字符串函数@DarkBee来解决这个问题,那么为什么要使用regex呢?@DarkBee您有任何有效的理由反对在这里使用regex吗?@DarkBee我不同意您的观点substr()
不适合这项工作。对于这样的情况,使用regex是非常昂贵的。参见我对其他答案的评论这是@Damocles答案:-D