Erro com data

23 views
Skip to first unread message

André Pignata

unread,
Feb 2, 2010, 6:50:54 AM2/2/10
to zfbr...@googlegroups.com
Pessoal, me deparei com o seguinte erro: Ao entrar com uma data em formato brasileiro e converter ela para formato americano, para lançar no bd, a data está retornando ano errado.
o código é o seguinte

echo 'Data'.$post['_dataini'].'<br>';
                    $data = new Zend_Date($post['_dataini']);
                    $data->setLocale('en_US');
                    $dataini = $data->get('YYYY-MM-dd');
echo 'Data fim:'.$dataini.'<br>';
                die();


e está dando o seguinte output:
Data:02/01/2010
Data fim:2009-01-021

Alguém sabe me dizer oq estou fazendo de errado??
Grato

Stephan A. de Souza

unread,
Feb 2, 2010, 6:53:43 AM2/2/10
to zfbr...@googlegroups.com
Use Zend_Date::toString() ao invés de Zend_Date::get()...

2010/2/2 André Pignata <andrep...@gmail.com>

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR



--
Analista de Sistemas Ação Direta : www.acaodireta.com.br | p...@acaodireta.com.br
www.twitter.com/bladed
Administrador HxBr.net
Forum/TeamSpeak Admin ragnaBR.net

Paulo Vitor Bettini de Albuqerque Lima

unread,
Feb 2, 2010, 6:57:47 AM2/2/10
to zfbr...@googlegroups.com
acho que o problema está ao criar o objeto.

você já tentou fazer algo como ;
$data = explode('/',$GET['data']);
$datearray = array('year' => $data[2]'month' => $data[1]'day' => $data[0]);
$date = new Zend_Date($datearray);


Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima

----
I enjoy the massacre of ads. This sentence will slaughter ads without a messy bloodbath.
Eu não gosto de anúncios do google nos meus emails...


2010/2/2 Stephan A. de Souza <bla...@gmail.com>

André Pignata

unread,
Feb 2, 2010, 7:00:26 AM2/2/10
to zfbr...@googlegroups.com
Mesmo com toString o erro persiste :s
André Luiz Martins Pignata
Integral Convênios Odontológicos
Gerente de TI

André Pignata

unread,
Feb 2, 2010, 7:02:46 AM2/2/10
to zfbr...@googlegroups.com
Olha que estranho.. se eu uso

    $data = new Zend_Date($post['_dataini']);
    $data->setLocale('en_US');
    $dataini = $data->get('YYYY-MM-dd');


Jan 2, 2010 12:00:00 AM

André Pignata

unread,
Feb 2, 2010, 7:06:11 AM2/2/10
to zfbr...@googlegroups.com
Desculpem pela msg anterior.. apertei enviar antes de terminá-la.
Mas o que acontece é, se eu uso $dataini = $data->toString, ele retorna Jan 2, 2010 12:00:00 AM.
Mas se eu uso $data->toString('YYYY-MM-dd') ele retorna 2009-01-02
ou seja.. o erro está na conversão...

Stephan A. de Souza

unread,
Feb 2, 2010, 7:16:22 AM2/2/10
to zfbr...@googlegroups.com
Ah sim claro, faltou definir o formato da entrada:

$data = new Zend_Date($post['_dataini'],'d/m/Y');

2010/2/2 André Pignata <andrep...@gmail.com>

Paulo Vitor Bettini de Albuqerque Lima

unread,
Feb 2, 2010, 7:31:13 AM2/2/10
to zfbr...@googlegroups.com
cara o formato do toString num é Y-m-d ?

Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima

----
I enjoy the massacre of ads. This sentence will slaughter ads without a messy bloodbath.
Eu não gosto de anúncios do google nos meus emails...


2010/2/2 Stephan A. de Souza <bla...@gmail.com>

André Pignata

unread,
Feb 2, 2010, 7:34:52 AM2/2/10
to zfbr...@googlegroups.com
Nem formatar a entrada como 'd/m/Y' ou a saída como 'Y-m-d' resolveu o problema.. continua saindo 2009-01-01 ao invés de 2010-01-01 :S

André Pignata

unread,
Feb 2, 2010, 7:36:45 AM2/2/10
to zfbr...@googlegroups.com
Esse problema só está ocorrendo até o dia 03/01/2010, do dia 04/01/2010 este problema não é mais apresentado :P

Paulo Vitor Bettini de Albuqerque Lima

unread,
Feb 2, 2010, 7:45:54 AM2/2/10
to zfbr...@googlegroups.com
ow fuck. acho que é o caso de abrir um ticket no bug tracker do zend.


Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima

----
I enjoy the massacre of ads. This sentence will slaughter ads without a messy bloodbath.
Eu não gosto de anúncios do google nos meus emails...


2010/2/2 André Pignata <andrep...@gmail.com>

André Pignata

unread,
Feb 2, 2010, 7:47:41 AM2/2/10
to zfbr...@googlegroups.com
É pessoal.. estou conversando com o Guilherme Blanco, que participa ativamente até mesmo do desenvolvimento da ZF e ele tb acha que é um bug.. assim que tiver mais notícias, aviso a todos.
Grato a todos.

Stephan A. de Souza

unread,
Feb 2, 2010, 7:54:53 AM2/2/10
to zfbr...@googlegroups.com
Ta perai, qual está sendo o problema?

2010/2/2 André Pignata <andrep...@gmail.com>

André Pignata

unread,
Feb 2, 2010, 8:12:23 AM2/2/10
to zfbr...@googlegroups.com
Qdo entro com as datas '01/01/2010','02/01/2010' ou '03/01/2010' e tento transformar para o padrão americado, a saída é '2009-01-01','2009-01-02' e '2009-01-03' respectivamente, a partir de '04/01/2010' esse problema não ocorre mais.
O código que estou usando é o seguinte


    $data = new Zend_Date($post['_dataini']);
    $data->setLocale('en_US');
    $dataini = $data->get('YYYY-MM-dd');


Stephan A. de Souza

unread,
Feb 2, 2010, 8:49:32 AM2/2/10
to zfbr...@googlegroups.com
Realmente..


Com Locale pt_BR, en_US: 
string 'pt_BR' (length=5)
string '2009-01-01' (length=10)
string '2009-01-01' (length=10)
string '1.10.0' (length=6)

Vou verificar aqui o que poder ser este problema, pois pode ser que tem haver com parametro "o" do date(), pois utilizando "Y" com format_type em PHP sai corretamente : http://php.net/manual/en/function.date.php

string 'pt_BR' (length=5)
string '2009-01-02' (length=10)
string '2010-01-02' (length=10)
string '1.10.0' (length=6)

2010/2/2 André Pignata <andrep...@gmail.com>

Stephan A. de Souza

unread,
Feb 2, 2010, 8:50:33 AM2/2/10
to zfbr...@googlegroups.com
Obs: Sempre preferi utilizar o format_type em PHP, para manter um padrão quando utilizo comandos do PHP para manipular data por questões de performance.

2010/2/2 Stephan A. de Souza <bla...@gmail.com>

André Pignata

unread,
Feb 2, 2010, 9:02:06 AM2/2/10
to zfbr...@googlegroups.com
Resolvi usando apenas yyyy-MM-dd
Reply all
Reply to author
Forward
0 new messages