Pular para o conteúdo

Calcular quantos anos tem tal data. [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Calcular quantos anos tem tal data. [RESOLVIDO]

Enviado em 20/11/2014 - 21:39h

Obrigado desde ja.

Fiz um script para calcular a data e gostaria de ajuda de voces para melhora-lo.

Algumas datas estao dando erro.

############################################

#!/bin/bash
echo -n "Digite a data assim MM/DD/AAAA: "
read datanas
datanas=`date +%s -d "$datanas"`
datatu=`date +%s`
data=$(((-1*$datanas)+$datatu))
data=$((((((($data-10800)/60)/60)/24)/365)))
echo "Sua idade: $data"

############################################

Erro:

atila@webserver:~$ ./conversordeidade
Digite a data assim MM/DD/AAAA: 10/20/2013
date: data inválida “10/20/2013”
./conversordeidade: linha 6: (-1*)+1416526616: erro de sintaxe: operando esperado (token com erro é ")+1416526616")
Sua idade: 0


Responder tópico

2. Re: Calcular quantos anos tem tal data. [RESOLVIDO]

Melhor resposta

Enviado em 22/11/2014 - 20:12h

Isso acontece porque a hora que você está tentando calcular simplesmente não existe na sua cidade, devido ao horário de verão. No dia 19 após 23:59:00 o relógio foi adiantado em uma hora, ou seja, o dia 20 começa ás 01:00:00...

Veja você mesmo o exemplo da cidade de São Paulo, onde também existe o horário de verão:

$ zdump -v America/Sao_Paulo | grep -i 'oct 20' | tail -2 
Ao executar: date +%s -d 10/20/2013, o "date" procura por 00:00:00, mas não existe nesse dia... o comando funcionaria se você procurasse por 23:59:00 ou 01:00:00, como: date +%s -d "10/20/2013 01:00:00"

3. Re: Calcular quantos anos tem tal data. [RESOLVIDO]

Enviado em 25/11/2014 - 17:43h

1424M414 escreveu:

Isso acontece porque a hora que você está tentando calcular simplesmente não existe na sua cidade, devido ao horário de verão. No dia 19 após 23:59:00 o relógio foi adiantado em uma hora, ou seja, o dia 20 começa ás 01:00:00...

Veja você mesmo o exemplo da cidade de São Paulo, onde também existe o horário de verão:

$ zdump -v America/Sao_Paulo | grep -i 'oct 20' | tail -2 



Ao executar: date +%s -d 10/20/2013, o "date" procura por 00:00:00, mas não existe nesse dia... o comando funcionaria se você procurasse por 23:59:00 ou 01:00:00, como: date +%s -d "10/20/2013 01:00:00"
Mas o mesmo comando funciona para os dias 19 e 21 e outros dias.

Este dia 20/11 de 2013 está dando problema.

Tem também o problema do ano bissexto, está dando diferença de dias de acordo com os anos bissextos.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder