正则表达式日期分离

时间:2012-09-13 15:50:12

标签: php regex

我有以下日期

20120809

我想将其与' - '分开并将其转换为

2012-08-09

使用正则表达式。

使用PHP有一个简单的解决方案吗?一切都会好的。

5 个答案:

答案 0 :(得分:4)

您可以使用date_parse_from_formatthe docs are here。在您的情况下,这将成为:

date_parse_from_format('Ymd',$dateIn);

给回一个数组,所以你可以从最后那里随心所欲地做到

正如@Rocket说的那样,你也可以获得DateTime对象,这也为你提供了各种各样的好东西。 more docs to read ;)

答案 1 :(得分:3)

使用date()strtotime()

date('Y-m-d',strtotime('20120809'));

答案 2 :(得分:2)

与其他人一致认为你不需要正则表达式来做这件事,但是......

preg_replace('/(\d{4})(\d\d)(\d\d)/', '\1-\2-\3', $str);

使用PHP,您可以使用substr_replace插入破折号:

$str = substr_replace($str, '-', 4, 0);
$str = substr_replace($str, '-', 7, 0);

答案 3 :(得分:2)

如果你想使用正则表达式,那很简单。只需将\d{4}等量词一起使用。

preg_replace('/(\d{4})(\d{2})(\d{2})/', '$1-$2-$3', '20120809');

答案 4 :(得分:1)

使用正则表达式是完全错误的,有更好的方法可以像substr()...

但这就是你想要的:

<?php

$string = '20120809';

preg_match( '/(\d{4})(\d{2})(\d{2})/', $string, $parts);

unset($parts[0]);

$result = implode('-', $parts); //2012-08-09

?>