Pesquisar este blog

segunda-feira, 26 de abril de 2010

Como comparar objetos date e datetime no python?

Alguém aí já precisou trabalhar com datas em alguma linguagem? Se já, provavelmente esbarrou em um monte de probleminhas, tipo formato da data, como imprimir a data no formato que você quer ( em alguns países, a data 20 de dezembro de 2010 seria escrita desta forma: 12/20/2010 ou até assim 2010/12/20 ), entre outros probleminhas.

Em python, para quem já conhece o timedelta, trabalhar com datas deve ser uma maravilha! Isso, até o fatídico momento em que o camarada tenta comparar um objeto do tipo date (representa uma data no calendário) com outro do tipo datetime (representa uma data no calendário e um horário).

Bem, eu caí nesse problema hoje. Dei uma pequena googada no assuno sem grande sucesso. E agora José? Bem, agora é simples, lembrei que não sou um maldito coding monkey e fiz uma solução só o piteu para o problema. Nada muito belo e grandioso, mas, saca só, FUNCIONA!

Seguinte, date e datetime possuem um método super legal chamado strftime que permite imprimir objetos date e datetime formatados do jeito que você quiser. Munido dele, criei strings com a mesma formatação para ambos os campos e os comparei. Coisa feia, né, Italo? Nada! Como o python faz comparação de string caractere a caractere (quando não está checando por uma igualdade!), pude fazer algo como:



Note que o truque está na formatação da string que deve ter o ano antes do mês e o mês antes do dia, assim, ele faz a checagem correta.

Abraço!

ps: no mais, curtam esse artista magnífico: