我有这样的以下日期
20120809
我想用'-'把它分开,然后把它变成
2012-08-09
使用正则表达式。
有没有使用 PHP 的简单解决方案?一切都会好的。
你可以使用date_parse_from_format
,文档在这里。在您的情况下,这将导致:
date_parse_from_format('Ymd',$dateIn);
返回一个数组,因此您几乎可以从那里开始随心所欲
正如@Rocket 所说,您还可以获得该DateTime
对象,它也为您提供了各种好东西。更多要阅读的文档;)
使用date()
和strtotime()
?
date('Y-m-d',strtotime('20120809'));
同意其他人您不需要正则表达式来执行此操作,但是...
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);
如果你想使用正则表达式,这很简单。只需\d
与量词一起使用,如{4}
.
preg_replace('/(\d{4})(\d{2})(\d{2})/', '$1-$2-$3', '20120809');
对这件事使用正则表达式是完全错误的,有更好的方法来做到这一点,比如 substr() ...
但这是你想要的:
<?php
$string = '20120809';
preg_match( '/(\d{4})(\d{2})(\d{2})/', $string, $parts);
unset($parts[0]);
$result = implode('-', $parts); //2012-08-09
?>