Calcular quantos anos tem tal data. [RESOLVIDO]

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

Atila Medeiros Leite Lintz
amllintz

(usa Debian)

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




  


2. MELHOR RESPOSTA

7#3 ^/3\\/\\/ |=02 3\\/32
1424M414

(usa Arch Linux)

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]

Atila Medeiros Leite Lintz
amllintz

(usa Debian)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts