如何完成数组日期

时间:2014-04-01 16:28:59

标签: php arrays

我有下一个数组:

$data = 
    [
        ["1198","2500","cofee","01-01-2014"],
        ["5689","2500","cofee","15-01-2014"],
        ["2420","2500","cofee","31-02-2014"]
    ];

使用此功能完成日期:

function completeDates($array, $format=null){
$startdate = current($array);
$startdate = $startdate[3];
$enddate = end($array);
$enddate = $enddate[3];

    (is_int($startdate)) ? 1 : $startdate = strtotime($startdate);
    (is_int($enddate)) ? 1 : $enddate = strtotime($enddate);

    if($startdate > $enddate){
        return false; //Fecha final es menor a la inicial
    }

    while($startdate < $enddate){
        $fecha = date($format, $startdate);
        $arr[$fecha] = ($format) ? ["aa"] : $startdate;
        $startdate += 86400;        

    }
    $arr[date($format, $startdate)] = ($format) ? end($array) : $enddate;
return $arr;
} 

我需要用其他数组数据的数据来完成新的日期,我需要这样的东西:

$data = 
    [
        ["1198","2500","cofee","01-01-2014"],
        ["1198","2500","cofee","02-01-2014"],//Generated
        ["1198","2500","cofee","03-01-2014"],//Generated
        ...
        ["5689","2500","cofee","15-01-2014"],
        ["5689","2500","cofee","16-01-2014"],//Generated
        ...
        ["2420","2500","cofee","31-02-2014"]
    ];

1 个答案:

答案 0 :(得分:0)

我有你的答案,但是在C#的方法中,因为我对jQuery没有好处。

我希望你能翻译它,因为它工作正常。

我用西班牙语为你提供了一些代码评论。

    public static List<Siniestro> RellenarArregloFechas(List<Siniestro> Rellenar)
    {

        //ordenamos el arreglo a rellenar-----------------
        for (int i = 1; i < Rellenar.Count; i++)
        {

            for (int j = 1; j < Rellenar.Count; j++)
            {
                if(Rellenar[j].Fecha > Rellenar[j+1].Fecha)
                {
                    Siniestro aux = Rellenar[j];
                    Rellenar[j] = Rellenar[j + 1];
                    Rellenar[j + 1] = aux;
                }
            }
        }
        //--------------------------------------------------


        //sacamos fecha inicial y final----------------------
        DateTime Finicial = Rellenar[1].Fecha.Value;
        DateTime Ffinal = Rellenar[Rellenar.Count].Fecha.Value;


        //mientras fecha inicial (que ira aumentando un dia) sea menor a la final
        // buscamos si no existe un siniestro con esa fecha inicial y si no existe
        //agregamos al listado de sinistros un siniestro nuevo que tenga los mismos
        // datos que el sinistro de la fecha un dia anterior a la fecha inicial en la que vamos, 
        // pero le agregamos un dia en su propiedad de fecha antes de agregarlo al List
        while (Finicial < Ffinal)
        {
            if(!Rellenar.Any(f => f.Fecha == Finicial))
            {
                Siniestro aux = new Siniestro();
                aux = Rellenar.Where(f => f.Fecha == Finicial.AddDays(-1)).FirstOrDefault();
                aux.Fecha.Value.AddDays(1);
                Rellenar.Add(aux);
            }

            Finicial = Finicial.AddDays(1);
        }

        return Rellenar;