Opa Braga, > Eu tenho ZSQL que traz a data do banco e não há qualquer manipulação e etc.
Hum... e qual o timezone dessa data que o banco está retornado? Eu aposto que o furo está aqui... > no zsql eu tenho o "select" ... tenho um script python que carrega esse > SZQL e repassa ao ZPT (com a opção dictionaries) e no ZPT é extamente > este trecho > > tal:attributes="value > python:DateTime(*MinhaData.parts()[:3]).strftime('%d/%m/%Y')" > > se eu tentar algo como: > > tal:attributes="value python:DateTime(MinhaData).strftime('%d/%m/%Y')" Opa, opa, porque cargas d'água você está criando um novo DateTime se o MinhaData retornado já é um DateTime? :-) Isso altera o timezone da data para o timezone usado no Zope, veja uma explicação mais detalhada abaixo. > Um dia é subtraído da data Será? Eu diria que isso é tecnicamente *impossível*... ;-) O que está acontecendo é que a representação do mesmo DateTime em timezones diferentes é, como esperado, diferente. Porém a data continua sendo a mesma, afinal quando já é zero hora de amanhã em Londres, ainda são 21:00 aqui, na pacata Garibaldi, assim como são 2:00 da matina na igualmente pacata Tønsberg, na Noruega. Deixa eu tentar provar isso... Se a data que estiver retornando do banco estiver num timezone diferente do que é usado no Zope o que ocorre é o seguinte: >>> # Criando uma data no formato ISO 8601[1] (timezone: GMT+0) >>> UTC = DateTime('2006-10-18') >>> UTC.parts() (2006, 10, 18, 0, 0, 0.0, 'GMT+0') Agora, se você passar esse DateTime como parâmetro para a criação de outro DateTime (que é o que você está fazendo no PageTemplate por uma razão que eu desconheço), o timezone dele muda para o do Zope (que herda o que estiver definido pelo sistema operacional): >>> DateTime(UTC).parts() (2006, 10, 17, 21, 0, 0.0, 'GMT-3') Note que mesmo a representação sendo diferente, eles continuam sendo a mesma coisa: >>> UTC == DateTime(UTC) True >>> UTC.timezone() == DateTime(UTC).timezone() False Ou seja, continua sendo a mesma 'data' só que em timezones diferente. Esse é o problema comum quanso se usa datas sem um timezone associado. A solução para o seu problema é fazer com que a instância do DateTime criada pelo banco esteja no mesmo timezone do que está sendo usado no Zope. A forma mais simples é fazendo o banco retornar uma string ISO 8601 ou, de forma mais simplificada, "AAAA-MM-DD GMT±X" ou ainda algo mais simples, "AAAA/MM/DD", detalhe para as barras no lugar dos traços. Espero ter ajudado a entender a questão e, conseqüentemente, a resolver o problema. [1] http://www.w3.org/TR/NOTE-datetime HTH, -- Dorneles Treméa X3ng Web Technology Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/zope-pt/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html