Erro ao popular input Data [Novato]

26 views
Skip to first unread message

Caio Lopes

unread,
Jun 3, 2016, 4:00:19 PM6/3/16
to AngularJS BR
Boa tarde,

Sou novato ainda no AngularJS, já procurei em diversos fóruns e não consigo encontrar a solução para o meu problema.

Tenho um cadastro que possui dois campos chamados de  Data Inicial e Data Final, onde eu salvo ele em um banco SQL utilizando Node + Sequelize.

Então eu crio um novo cadastro, preencho as datas e salvo, ele vai aparecer no meu grid corretamente.

Um exemplo, fui lá e salvei a data 03/06/2016.

Até aqui tudo bem, o problema começa quando vou editar esse cara, porque no meu controller eu carrego o seguinte comando para alimentar o input após o get

$scope.tabelapreco.datainicial = new Date(tabelapreco.datainicial);
$scope
.tabelapreco.datafinal = new Date(tabelapreco.datafinal);


Sem isso, meu input date não traz o que salvou no banco, o problema é que toda vez ele me traz um dia antes, se salvo 03/06/2016, ele traz 02/06/2016, se salvo dia 10, ele traz dia 09, não sei onde posso estar errando.

Obrigado pela ajuda!

Thiago Abreu

unread,
Jun 3, 2016, 8:38:14 PM6/3/16
to AngularJS BR
isso tem relação com o formato da data que está setado no seu backend

provavelmente está gravando com um time zone que está te confundindo!

--
Você recebeu essa mensagem porque está inscrito no grupo "AngularJS BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para angularjs-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Américo Neto

unread,
Jun 3, 2016, 10:10:34 PM6/3/16
to angula...@googlegroups.com

Caio,

Pode ser um problema de timezone.. em qual formato a data está vindo do banco?

Caio Lopes

unread,
Jun 4, 2016, 9:28:04 AM6/4/16
to AngularJS BR
Então, o tipo de campo que eu criei foi no formato DATE.

No Sequelize do node eu setei a seguinte configuração para ficar na timezone correta:

var sequelize = new Sequelize('NomeDoBanco', 'usuario', 'senha', {
     host: 'localhost',
     logging: false,
     timezone: '-03:00', 
     omitNull: true,
     dialect: 'mssql',
      dialectOptions: {
           instanceName: 'MSSQLSERVER2'
       }
});

Quando salvo no banco, ele salva no formato correto, ex: Se estou inserindo o cadastro e informo dia 07/06/2016, no banco ele vai salvar 2016-06-07, mas quando vou editar esse cara, no input date ele sempre traz um dia anterior.

Teria como setar um timezone para esse input ? 

Obrigado a ajuda pessoal!

Caio Lopes

unread,
Jun 4, 2016, 10:28:32 AM6/4/16
to AngularJS BR
Pessoal, consegui resolver o problema, foi só mudar o tipo de campo na tabela de DATE para DATETIME, assim agora o angular se comporta corretamente!

Obrigado pela ajuda!


Em sexta-feira, 3 de junho de 2016 17:00:19 UTC-3, Caio Lopes escreveu:
Reply all
Reply to author
Forward
0 new messages