contar as dias entre a data inicial e hoje que não são nem sábado nem domingo ( incluindo data inicial e hoje ) e multiplicar por 300.
até achei como ver o dia da semana, mas fiquei confuso de como fazer o loop.
Tente focar na periodicidade dos dias. Por exemplo se 01/10/2020 cair em um sábado, o dia 08/102020 também será sábado, ou seja sábados e domingos se repetem a cada sete dias.
3. Re: Cálculo de dias úteis
msoliverusa Debian
Post recolhido
Enviado em 30/10/2020 - 17:01h
Mauriciodez escreveu:
pessoas ... tô enrolado para fazer o seguinte
Dia_inicial=01/10/2020
dia final=HOJE
contar as dias entre a data inicial e hoje que não são nem sábado nem domingo ( incluindo data inicial e hoje ) e multiplicar por 300.
até achei como ver o dia da semana, mas fiquei confuso de como fazer o loop.
Boa tarde Mauricio, tudo certo.....
Veja se ajuda:
Outubro 2020
se 5 12 19 26
te 6 13 20 27
qu 7 14 21 28
qu 1 8 15 22 29
se 2 9 16 23 30 sá 3 10 17 24 31 do 4 11 18 25
awk, "pega" da linha 2 ate a 6, isso "exclui" 'Outubro 2020' , 'sá' e 'do',
sum+=NF; conta os registros,
(sum-5): subtrai 5, pq contou os campos que tem o dia da semana;
+ uma opção
seq 30|xargs -i date -d"2020-10-{}" +%a' '%x|sed '/sáb/d;/dom/d'|wc -l
22
Muito mais rápido....
#86400 = segundos em um dia:
#echo $((60*60*24))
uts=$(date -d"2020-10-01 00:00:00" +%s); #Nº de segundos na data inicial.
gawk -v t=$uts 'BEGIN {for(i=0;i<=30;i++) printf "%s\n" ,strftime("%a %x", t+86400*i)}'|sed -nr '/(sáb|dom)/!p'|wc -l;
22
______________________________________________________________________ Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________ Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte: Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________
4. Re: Cálculo de dias úteis [RESOLVIDO]
leandropscarduausa Ubuntu
Post recolhido
Enviado em 30/10/2020 - 19:26h
Vou sugerir um algoritmo aqui: pegue a qde de dias e faça divisão por 7 ( no dias da semana) . Pegue o resto e a parte inteira.
Multiplique a parte inteira por 5(no de dias úteis) e adicione o resto da conta anterior.
Se o dia inicial for domingo vc subtrai 1 e se for sabado subtrai 2 p ajustar.
5. Re: Cálculo de dias úteis [RESOLVIDO]
Mauriciodezusa Debian
Post recolhido
Enviado em 02/11/2020 - 13:03h
depois de muita dor de cabeça consegui resolver meu problema.
if [ $(date -d "$x day ago" +%A) != "sábado" ] && [ $(date -d "$x day ago" +%A) != "domingo" ]; then
y=$((++y))
fi
done
echo $(( $y * 300 ))
------------------------------------------------------| Linux User #621728 |------------------------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------------------| Linux User #621728 |------------------------------------------------------
6. Re: Cálculo de dias úteis [RESOLVIDO]
msoliverusa Debian
Post recolhido
Enviado em 02/11/2020 - 18:03h
Mauriciodez escreveu:
depois de muita dor de cabeça consegui resolver meu problema.
para minha situação o script ficou assim.
#!/bin/bash
y=0
x=`echo $(( ( $(date +%s) - $(date -d "09/28/2020" +%s) ) / 86400 +1 ))`
while ((x--));do if [ $(date -d "$x day ago" +%A) != "sábado" ] && [ $(date -d "$x day ago" +%A) != "domingo" ]; then
y=$((++y))
fi
done
echo $(( $y * 300 ))
------------------------------------------------------| Linux User #621728 |------------------------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
------------------------------------------------------| Linux User #621728 |------------------------------------------------------
Sugestão:
Troque o condicional: if [ $(date -d "$x day ago" +%A) != "sábado" ] && [ $(date -d "$x day ago" +%A) != "domingo" ]; then
y=$((++y))
fi Por:
[[ $(date -d "$x day ago" +%A) != "(sábado|domingo)" ]] && let y++
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________