Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, estou com um cliente que tem o cadastro de metas dele.
Hoje ele lança a meta por vendedor por exemplo R$100.000,00.
O que ele precisa e gerar a meta dia a dia, com isso precisava abrir em uma tela todos os dias do mês e ele ir digitando o valor da meta do dia. exemplo:
01/01/2017 - Domingo
02/01/2017 - Segunda
03/01/2017 - Terça
...
...
31/01/2017 - Terça
Pois ele seleciona o dia que os vendedores trabalham com o valor da meta diaria, tem como eu puxar o calendario do mes inteiro usando o php?
Para tal, pode utilizar a class DatePeriod da biblioteca Date/Time.
foreach(new \DatePeriod($start , new \DateInterval('P1D') , $end) as $date)
{
É importante visualizar que eu estou selecionando o primeiro dia do mês atual e o primeiro dia do próximo mês (ao invés de escolher o último dia o mês atual). Uma explicação detalhada você pode encontrar no link abaixo:
http://forum.imasters.com.br/topic/550659-erro-em-dateperiod-php-encontra-2-meses-ao-inves-de-3/
Para remover os finais de semana, basta condicionar:
foreach(new \DatePeriod($start , new \DateInterval('P1D') , $end) as $date)
{
Infelizmente, conforme informado no manual, o método DateTime::format() não olha para o locale configurado, logo:
Para imprimir o dia da semana, deve usar strftime. O qual é fácil de se utilizar em conjunto.
Primeiro, define-se o locale:
setlocale(LC_ALL, 'pt_BR');//O locale pode mudar de sistema para sistema, pode ser pt-br, PT_BR, pt_BR, etc..
Depois, só adicionar ao código já existente:
printf('Data: %s (%s)<br/>' , $date->format('d/m/Y') , strftime('%A' , $date->getTimestamp()));
Saída:
Data: 03/01/2017 (terça) Data: 04/01/2017 (quarta) Data: 05/01/2017 (quinta) Data: 06/01/2017 (sexta) Data: 09/01/2017 (segunda) Data: 10/01/2017 (terça) Data: 11/01/2017 (quarta) Data: 12/01/2017 (quinta) Data: 13/01/2017 (sexta) Data: 16/01/2017 (segunda) Data: 17/01/2017 (terça) Data: 18/01/2017 (quarta) Data: 19/01/2017 (quinta) Data: 20/01/2017 (sexta) Data: 23/01/2017 (segunda) Data: 24/01/2017 (terça) Data: 25/01/2017 (quarta) Data: 26/01/2017 (quinta) Data: 27/01/2017 (sexta) Data: 30/01/2017 (segunda) Data: 31/01/2017 (terça)