我有下一个数组:
$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"]
];
答案 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;