• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

David Pintassilgo

Subtrair dias a uma data.

19 mensagens neste tópico

Boas.

Estou com uma pequena dificuldade:

Eu Tenho por isto:

agora = strftime("%Y-%m-%d %H:%M:%S")

E fico com a data/hora actual, certo?

Eu com só preciso da data e tal... faço isto:

agora = strftime("%Y-%m-%d")

Até aqui tudo bem.

Mas eu queria por exemplo, agarrar no agora e subtrair 3 dias.

Como é que eu 'faço contas' com isso?

Alguma forma simples/prática de fazer o que quero?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem te dar código em concreto (nunca fiz isto em Python), o mais simples é pegares no unix timestamp e tirares-lhe os tais 3 dias (60*60*24*3 segundos).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
o  unix timestamp e tirares-lhe os tais 3 dias (60*60*24*3 segundos).

Explica-te ai melhor.. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em PHP, era time()-60*60*24*3 e ficavas com o tempo anterior. A ideia é pegares no Unix Timestamp (segundos desde o Unix Epoch (1970)) e subtraires-lhe 3 dias (ou seja, 1 min = 60 segundos, 1 hora = 60 minutos, 1 dia = 24 horas, 3 dias = 60*60*24*3).

import time

x=time.time()
print "Agora: ",x
print "Antes: ",x-60*60*24-3

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hummmmm.... quando chegar a casa vou estudar isso melhor.... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ena bem... isso baralha-me prai isto tudo! :S

Agora:  1201450051.95

Antes:  1201363648.95

Não á prai nada mais pratico?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A melhor maneira é usares o módulo datetime. Repara no seguinte código.

>>> from datetime import timedelta, date
>>> hoje = date(2008, 1, 27)
>>> intervalo = timedelta(10)
>>> x+d
datetime.date(2008, 2, 4)

x+d devolve um objecto date correspondente a 10 dias depois de hoje.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha boa! :D:(

Mas ai 'o gajo' não vai buscar a data de hoje automaticamente...?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tanto podes pôr

hoje = date(2008, 1, 27)

como

ontem = date(2008, 1, 26)

.

A data é definida pelos argumentos. Se quiseres mesmo o dia actual em que o código executa é:

>>> from datetime import date
>>> date.today()
datetime.date(2008, 1, 27)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja, para ter o dia 22 neste momento fazia qq coisa como:

from datetime import timedelta, date
hoje = date(date.today())
intervalo = timedelta(5)
passado = hoje - intervalo

é isso?

:D :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

from datetime import timedelta, date
hoje = date.today()
intervalo = timedelta(5)
passado = hoje - intervalo

ou explícitamente

dia22 = date(2008,1,22)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou eu não estou a perceber nada, ou não expliquei bem o que queria:  :D

isto assim:

dia22 = date(2008,1,22)

Vai devolver o dia 22, mas amanham continua a devolver 22 em vez de 23, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que tu queres é:

hoje = date.today()

Que vai dar a data de hoje (aka, dia actual), ou seja, hoje ia dar 27, amanhã 28, no outro dia 29, ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que já resolveu o meu problema de vez! :D

Obrigadão:

dia = date.today() - timedelta(2)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

..olha.. 'engracado. Não dá assim como meti ai. Tem de ser como lá atrás.

from datetime import timedelta, date
hoje = date.today()
intervalo = timedelta(5)
passado = hoje - intervalo

(não me deixa juntar isso tudo)

Mas pronto, está feito :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes juntar, não te esqueças é do import né?

>>> from datetime import timedelta, date
>>> date.today() - timedelta(2)
datetime.date(2008, 1, 25)

De nada.  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora