我有以下日期
20120809
我想将其与' - '分开并将其转换为
2012-08-09
使用正则表达式。
使用PHP有一个简单的解决方案吗?一切都会好的。
答案 0 :(得分:4)
您可以使用date_parse_from_format
,the 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
?>