月份和年份的日期php日期

时间:2016-04-13 09:09:51

标签: php

我有值

  

2016年5月5日,   2016年5月19日,   2016年5月26日,   2016年6月2日,   2016年6月16日,   2016年6月23日,   2016年7月7日,   2016年7月14日

我如何用PHP表示:

  

05,19,26 2016年5月
  2016年6月2日,16日,23日   2016年7月7日,14日

2 个答案:

答案 0 :(得分:0)

假设数组是有序的,那么这段代码应该可以工作:

<?php
$str = '05 May 2016, 19 May 2016, 26 May 2016, 02 June 2016, 16 June 2016, 23 June 2016, 07 July 2016, 14 July 2016';
$arr = explode(',',$str); //
$results = array();
$currResStr = '';
$lastMonth = '';
$lastYear = '';
$appendMonth = false;
$elCount = count($arr);
for ($i=0; $i < $elCount; $i++) {
    preg_match("/([0-9]{2})\s([a-zA-z]+)\s([0-9]*)/", $arr[$i], $match);
    if($i+1 < $elCount){
        preg_match("/([0-9]{2})\s([a-zA-z]+)\s([0-9]*)/", $arr[$i+1], $match2);
        if($match[2] !== $match2[2]){
            $appendMonth = true;
        }else{
            $appendMonth = false;
        }
        if($appendMonth || $i+1 >= count($arr)){
            $currResStr .= $match[1].' '.$match[2].' '.$match[3];
            array_push($results,$currResStr);
            $currResStr = '';
        }else{
            $currResStr .= $match[1].',';
        }
    }else{
        $currResStr .= $match[1].' '.$match[2].' '.$match[3];
        array_push($results,$currResStr);
    }
}
var_dump($results);
?>

打印出来:

array(3) { [0]=> string(17) "05,19,26 May 2016" [1]=> string(18) "02,16,23 June 2016" [2]=> string(15) "07,14 July 2016" }

答案 1 :(得分:0)

这是我的三个步骤:

  1. 以逗号分解
  2. 循环以分配用于对日期进行分组的临时密钥
  3. 循环显示值
  4. 代码:

    $string='05 May 2016, 19 May 2016, 26 May 2016, 02 June 2016, 16 June 2016, 23 June 2016, 07 July 2016, 14 July 2016';
    foreach(explode(', ',$string) as $date){
        $groups[substr($date,3)][]=substr($date,0,2);
    }
    foreach($groups as $monthyear=>$days){
        echo implode(',',$days)," $monthyear<br>";
    }
    

    输出:

    05,19,26 May 2016
    02,16,23 June 2016
    07,14 July 2016
    

    对于相同的结果,您可以在第一个循环中使用第二个爆炸:

    foreach(explode(', ',$string) as $date){
        $parts=explode(' ',$date,2);
        $groups[$parts[1]][]=$parts[0];
    }
    foreach($groups as $monthyear=>$days){
        echo implode(',',$days)," $monthyear<br>";
    }