<?php
FUNCTION changedate($str){
$str=str_replace("年", "-",$str);
$str=str_replace("月", "-",$str);
$str=str_replace("日", "",$str);
$str=strftime("%Y-%m-%d",strtotime($str));
return $str;
}
// 结束
$a="2006年03月04日";
$b="2006年3月4日";
echo changedate($a)."<BR>";
echo changedate($b)."<BR>";
?>
FUNCTION changedate($str){
$str=str_replace("年", "-",$str);
$str=str_replace("月", "-",$str);
$str=str_replace("日", "",$str);
$str=strftime("%Y-%m-%d",strtotime($str));
return $str;
}
// 结束
$a="2006年03月04日";
$b="2006年3月4日";
echo changedate($a)."<BR>";
echo changedate($b)."<BR>";
?>
1.str_replace掉年,月,日成 - / 等,需要更细处理就strtotime
2.substr获取2006 03 04,然后用date函数获取得到2006-03-04
方法1.
$a = preg_split("/\D{1,2}/",$str);
array_pop($a);
echo join("-",$a);方法2:
echo preg_replace("/(\d{4}).*?(\d{1,2}).*?(\d{1,2}).*/","$1-$2-$3",$str);
/\D/直接替换成。。 -
即可。。
不用JOIN。
也不用捕获。。
echo date('Y-m-d', strtotime(join('-', sscanf($s, '%d年%d月%d日'))));
对于2006年03月04日是对的,但是对于2006年3月4日的时候就不对了,别人要是是
2006-03-04的格式呀!
经测试
$str="2006年04月03日";//或者 $str = "$str="2006年4月3日";
echo preg_replace("/(\d{4}).*?(\d{1,2}).*?(\d{1,2}).*/","$1-$2-$3",$str);
都可正常工作。
echo date('Y-m-d', strtotime(preg_replace('/\D+/', '-', $s)));
你得到的是 2006-4-3而不是2006-04-03
请参考唠叨老大的答案。
。
知道了
抱歉。。
<script type="text/javascript">
var time = "2006年04月03日";
time.match(/\d+/g).join("-");
</script>
飘走
$str = preg_replace('/(\d{4})年(\d+)月(\d+)日/e',"dateF('\\1-\\2-\\3')",$str);
function dateF($mix)
{
return date("Y-m-d",strtotime($mix));
}
echo $str;
$str=str_replace("年", "-",$str);
$str=str_replace("月", "-",$str);
$str=str_replace("日", "",$str);
$str=date("Y-m-d",strtotime($str));
return $str;
}