cdfree 3 Denunciar post Postado Julho 23, 2014 Como posso gerar uma array de datas $datainicial = '23-07-2014'; $datafinal = '23-01-2015'; $datas = ('23-07-2014','23-08-2014','23-09-2014',.....,'23-10-2014','23-01-2014'); Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 23, 2014 Não entendi muito bem para que você quer, mas segue $datainicial = '23-07-2014'; $datafinal = '23-01-2015'; $di = array(); $df = array(); array_push($di, $datainicial); array_push($df, $datafinal); $datas = array_merge($di, $df); print_r($datas); Para laços $di = $df = array(); while (...) { array_push($di, $datainicial); array_push($df, $datafinal); } $datas = array_merge($di, $df); http://php.net/manual/pt_BR/function.array-merge.php http://php.net/manual/pt_BR/function.array-combine.php http://php.net/manual/pt_BR/function.array-push.php Não me lembro da função que remove o indice, da uma pesquisada no :google: ou http://php.net/manual/pt_BR/ref.array.php Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Julho 23, 2014 Tenho uma função que já me ajudou muito: function datasArray($data_inicio, $data_fim = null) { $data_fim = !$data_fim ? date('d-m-Y') : $data_fim; list($dia, $mes, $ano) = explode( "-",$data_inicio); $dataInicial = getdate(strtotime($data_inicio)); $dataFinal = getdate(strtotime($data_fim)); $dif = ( ($dataFinal[0] - $dataInicial[0]) / 86400 ); $meses = round($dif/30)+1; // +1 serve para adiconar a data fim no array for($x = 0; $x < $meses; $x++){ $datas[] = date("d-m-Y",strtotime("+".$x." month",mktime(0, 0, 0,$mes,$dia,$ano))); } return $datas; } uso/saida: $array = datasArray('23-07-2014', '23-08-2015'); print_r($array); Array ( [0] => 23-07-2014 [1] => 23-08-2014 [2] => 23-09-2014 [3] => 23-10-2014 [4] => 23-11-2014 [5] => 23-12-2014 [6] => 23-01-2015 ) Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 23, 2014 Realmente não tinha entendido e o dochipis pegou, eu uso uma função parecida com a decima, mas ela tem uns recursos a mais, como passar o tipo de formato e se é o intervalo é por dia, mes ou até mesmo ano, e mais limpa. Como agora já almocei entendi :) Segue minha contribuição. function dateRange($first, $last, $step = '+1 day', $format = 'd/m/Y' ) { $dates = array(); $current = strtotime($first); $last = strtotime($last); while( $current <= $last ) { $dates[] = date($format, $current); $current = strtotime($step, $current); } return $dates; } Uso $first = '2014-02-28'; $last = '2018-01-01'; print_r(dateRange($first, $last, '+1 month', 'Y-m-d' )); Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Julho 23, 2014 PHP tem isso pronto $datas = new DatePeriod(new DateTime('2014-01-20'), new DateInterval('P30D'), new DateTime('2014-12-20')); foreach($datas as $data) { echo $data->format('d/m/Y'),'<br>'; } no caso do nosso amigo ai, que parece que quer gerar datas de pagamento (10 parcelas no exemplo abaixo) $datas = new DatePeriod(new DateTime('2014-01-20'), new DateInterval('P1M'), 10); foreach($datas as $data) { echo $data->format('d/m/Y'),'<br>'; } Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Julho 23, 2014 #5 Top :joia: Copiando e Atualizando ;) Compartilhar este post Link para o post Compartilhar em outros sites