Re: Res: [zope-pt] [ off-topic ] Zope Freak Show - manipulando datas

2006-10-18 Por tôpico Jeronimo Zucco
Caso alguém esteja com problemas com o horário de verão, pode pegar esse script
na internet, que funciona. Já testei em Linux e FreeBSD:

http://web.onda.com.br/humberto/arquivo/HorarioDeVerao.sh

Como o próprio dono do script disse, é um POG (*) , mas funciona :-)

(*) POG = http://desciclo.pedia.ws/wiki/POG

--
Jeronimo Zucco
LPIC-1 Linux Professional Institute Certified
Núcleo de Processamento de Dados
Universidade de Caxias do Sul

http://jczucco.blogspot.com


Citando Dorneles Treméa <[EMAIL PROTECTED]>:

> 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,
> "-MM-DD GMT±X" ou ainda algo mais simples, "/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
>



This message was sent using IMP, the Internet Messaging Program.



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

 



Re: Res: [zope-pt] [ off-topic ] Zope Freak Show - manipulando datas

2006-10-18 Por tôpico Dorneles Treméa
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,
"-MM-DD GMT±X" ou ainda algo mais simples, "/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

 



Res: [zope-pt] [ off-topic ] Zope Freak Show - manipulando datas

2006-10-18 Por tôpico Rodrigo Braga


Grande Deo!Eu tenho ZSQL que traz a data do banco e não há qualquer manipulação e etc.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 trechotal: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')"Um dia é subtraído da data- Mensagem original De: Dorneles Treméa
 <[EMAIL PROTECTED]>Para: zope-pt@yahoogrupos.com.brEnviadas: Terça-feira, 17 de Outubro de 2006 23:04:29Assunto: Re: [zope-pt] [ off-topic ] Zope Freak Show - manipulando datas


Opa Braga,

> Passei por uma situação curiosa envolvendo datas e estou relatando por
> dois motivos, pode auxiliar outras pessoas no futuro e pode também
> surgir uma solução mais interessante.
> 
> Ocorre o seguinte, eu gravo uma data no banco e depois ela é colocada em
> um textbox em uma janela de edição de dados e etc.
> 
> Ao carregar essa data (em um ZPT) o Zope simplemente subtrai um dia, sem
> perguntar religião, time que torce e etc., ele subtrai e pronto.

isso está seriamente cheirando a algo relacionado com a mudança de
timezone, ou seja, para nós o famigerado horário de verão...

> a solução sugerida foi a seguinte:
> 
> tal:attributes="value python:DateTime(*MinhaData.parts()[:3]).strftime('%d/%m/%Y')"
> 
> onde eu "recrio a data" e posteriormente formato, ao tentar formatar
> diretamente a data é subtraída em um dia.
> 
> Caso alguém queira acrescentar algo naturalmente será deveras
> interessante :D

Seria interessante você tentar produzir um trecho mínimo de código
onde o problema possa ser reproduzido para darmos uma olhada.

[]'s

-- 

Dorneles Treméa
X3ng Web Technology



		 
O Yahoo! está de cara nova. Venha conferir!
__._,_.___





Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED]








   



  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  



  
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 Termos do Serviço do Yahoo!.

  




__,_._,___