DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

Você está aqui: dgmike » Arquivos para data

  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem é dgmike?

Campo DataTransacao no retorno do PagSeguro

Posted in Dia-a-dia, pagseguro by DGmike
Apr 03 2009
TrackBack Address.

Algumas vezes algumas pessoas me perguntam sobre o campo DataTransacao quando trabalhamos com boletos? Qual data vem nesse campo? A data em que o boleto foi emitido? A data em que o status foi alterado? Ou a data em que o POST foi enviado para você. (se quiser uma explicação sobre o que é esse tal de POST ou como funciona o PagSeguro, aconselho a ler meu artigo escrito no forum do iMasters)

No PagSeguro, o Boleto você pode gerar boletos para seus clientes de forma segura, mas atente para a data de compensação desse boleto. Nem você nem seu cliente querem erros nessas datas

No PagSeguro, o Boleto você pode gerar boletos para seus clientes de forma segura, mas atente para a data de compensação desse boleto. Nem você nem seu cliente querem erros nessas datas

Claro que isso é uma preocupação muito grande para quem trabalha com créditos que dependem da data em que a pessoa efetuou o pagamento. Cinco dias corridos de acesso a partir do pagamento por exemplo.

Então fui procurar uma resposta em meu log de dados, eis que me deparo com dois casos e verifiquei a seguinte sequencia de pagamentos via boletos (os IDs das tranações foram alterados para segurança dos clientes):

//-
Thu Apr 2 21:04:17 2009

‘StatusTransacao’: ‘Aguardando Pagto’,
‘DataTransacao’: ‘02/04/2009 21:08:58‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXA’,

Fri Apr 3 06:27:04 2009

‘StatusTransacao’: ‘Aprovado’,
‘DataTransacao’: ‘02/04/2009 21:08:58‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXA’,
-//

//-
Thu Apr 2 11:04:38 2009

‘StatusTransacao’: ‘Aguardando Pagto’,
‘DataTransacao’: ‘02/04/2009 11:09:18‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXB’,

Fri Apr 3 06:02:47 2009

‘StatusTransacao’: ‘Aprovado’,
‘DataTransacao’: ‘02/04/2009 11:09:18‘,
‘TipoPagamento’: ‘Boleto’,
‘TransacaoID’: ‘XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXB’,
-//

Como podemos perceber, o campo “DataTransacao” não é alterado e provavelmente se refere à data em que a compra foi efetuada, logo aconselho a alterar a data do seu banco de dados com a data atual do sistema. Em mysql você pode usar NOW() (faz um “SELECT NOW()” para ver o que estou falando).

Abraços, espero que isso retire a dúvida de uma ou duas pessoas =D

1 Comment »
Tagged as: aplicar, banco de dados, boleto, data, dinheiro, e-commerce, loja, loja virtural, mysql, pagamento, pagseguro, php, postgree, retorno, retorno automático, simples

Validando datas em JavaScript

Posted in Programação, javascript by DGmike
Jan 18 2008
TrackBack Address.

Se você é como eu e gosta de ficar testando as validações até achar uma solução sem falhas, este post é para você! Há alguns dias eu escrevi como validar datas em JavaScript, sendo minha primeira versão conveniente e atraente. Mas no mesmo dia, vi que ela tinha um erro: tente entrar com o dia 30 de fevereiro. Sim, ele aceita, afinal o texto passa pela expressão regular. Se você analisar, não está sendo avaliada a data em si, mas o texto (string) conforme a formatação da data.

Logo, resolvi o problema (naquele mesmo dia, mas deixei para publicar depois) usando o objeto Date. O interessante é que quando criamos um objeto Date com uma data estranha como 32 (31+1) de Dezembro de 2008, e usamos os seus métodos (getYear() por exemplo), retornará a data corrigida, ou seja 1 de janeiro de 2009 em nosso exemplo.

Pensando nisso, resolvi reescrever a data que passou pelo teste e compará-la com a data reescrita corrigida pelo objeto, desta forma avaliamos a data em si e não só a string.

Este é o código novo, para ser usado após o código anterior.

// Ok, ok... passou pelo primeiro teste, vamos ver o teste forte...

if (dataAtual != '') {
  // Dividimos a data novamente...
  // assim podemos pegar cada elemento sem dor de cabeça
  x = dataAtual.split (divisor)
  // Criando um objeto data para validação
  confere = new Date (x[2],x[1]-1,x[0])
  // Reescrevendo a data em confere2 a partir da data passada
  confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
  confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
  confere2 += divisor + confere.getFullYear()
  // Conferindo... O interessante é que,
  // usando um objeto Date, o dia 31/11 é
  // reescrito para 01/12, invalidando a data
  if (confere2 != dataAtual) dataAtual = ''
}

E este é o código final, sem comentários:

function validaData (e) {
  var divisor = '/'
  var data = e.value
  var dataAtual = ''

  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    data = data.replace (/[^0-9]/g, '')
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  if (dataAtual != '') {
    x = dataAtual.split (divisor)
    confere = new Date (x[2],x[1]-1,x[0])
    confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
    confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
    confere2 += divisor + confere.getFullYear()
    if (confere2 != dataAtual) dataAtual = ''
  }
  e.value = dataAtual
}

O resultado funcionando está disponível para estudos no meu outro servidor, já que o wordpress não me permite mexer nos arquivos ou inserir JavaScript. (risos)

No Comments yet »
Tagged as: corrigida, data, Date Object, estudos, expressão regular, formatação, formatação da data, getDate, getFullYear, getMonth, getYear, javascript, new Date, objeto Date, problema, resultado funcionando, sem falhas, servidor, solução, string, validações, validar, validar datas, wordpress

Validando datas em JavaScript

Posted in Programação, javascript by DGmike
Jan 10 2008
TrackBack Address.

Esta semana precisei fazer uma validação de datas em JavaScript e em PHP. Como o título acima prevê, vou disponibilizar a minha solução em JavaScript.

O problema: Cada usuário decide colocar uma data de cada forma, com traços (-) entre as divisões entre dia-mes-ano ou com pontos (.) ou mesmo com barras (o padrão), alguns até mesmo não colocam divisores. Usuários não sabem se devem colocar dois ou quatro caracteres para o ano, na escola se aprendeu que poderia se colocar apenas dois digitos para anos, o que a preguiça/sedentarismo auxilia nesta caminhada.

A solução Sabemos que serão dispostos números: dois pares de digitos e 4 digitos ou três pares de digitos. Na segunda opção podemos delimitar que acima de 30, o sujeito queria se especificar a 1930 para cima e abaixo deste numero entramos na casa dos 2000, ou seja, 2030. Expressões regulares auxiliam bastante nisto.

Uma expressão regular ninja do Aurélio Jargas inspirou meu pensamento, ficando a minha versão final assim:

/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/

Com isto, verificamos se a nossa data foi escrita corretamente. Após isto, reescrevemos a data conforme desejamos.

function validaData (e) {
  // Definimos o divisor de nossa nova data
  var divisor = '/'
  // Recebemos a data digitada pelo usuario
  var data = e.value
  // Setamos a nova data para vazia
  var dataAtual = ''
  // Verificamos se o camarada digitou uma data válida
  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    // Precisamos trabalhar apenas com numeros
    data = data.replace (/[^0-9]/g, '')
    // adicionamos os dois primeiros pares
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    // Agora, os quatro ultimos
    // Se o usuário entrar com quatro caracteres, então ele entrou com uma data inteira
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    // Senão, verificamos se os dois caracteres finais baseiam-se em 30 (lembrem-se do que disse no post)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  // Por ultimo, reescrevemos o campo
  e.value = dataAtual
}

Versão sem comentários

function validaData (e) {
  var divisor = '/'
  var data = e.value
  var dataAtual = ''
  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    data = data.replace (/[^0-9]/g, '')
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  e.value = dataAtual
}

Esta função pode muito bem ser usada no blur do campo.

<input type="text" onblur="validaData (this)"  />

Veja o resultado na prática.

No próximo post, mando a complementação desta função e a versão para PHP. Por enquanto estude a expressão regular, que é a chave da validação.

No Comments yet »
Tagged as: aprendeu, data, dia-mes-ano, digitos, expressão regular, forma, javascript, ninja, números, poderia, solução, validação, validação de datas

Reformatando as datas em python

Posted in Amigos, Cotidiano, Programação, python by DGmike
Jan 08 2008
TrackBack Address.

Como vocês sabem, estou aprendendo Python pouco a pouco. Meu amigo Fred decidiu fazer uma formatação de data recebida em MySQL para formato nacional em PHP.

Decidi fazer minha versão em Python.

>>> data = '2008-08-12'
>>> ndata = data.split ('-')
>>> ndata.reverse ()
>>> ndata = '/'.join(ndata)

ndata agora conterá o seguinte valor: 12/08/2008

Claro que esta não é a melhor solução, afinal ainda estou engatinhando na linguagem Python… mas funciona!

No Comments yet »
Tagged as: aprendendo python, data, formatação, formato, formato nacional, formato nacional de data, join, linguagem, linguagem Python, mysql, php, python, reverse, split, valor, versão

Categorias

  • Cotidiano  (132)
    • Amigos  (16)
    • Dia-a-dia  (33)
    • Diversão  (18)
    • Games  (1)
    • Não categorizado  (26)
  • Design  (15)
    • Ilustração  (6)
    • Imagem  (8)
    • Inspiração  (5)
    • Vetorial  (5)
  • eventos  (10)
    • PHP Conference  (3)
  • flash  (4)
  • Navegadores  (22)
    • Chrome  (6)
    • extensions  (11)
    • Firefox  (18)
    • Internet Explorer  (6)
  • pagseguro  (12)
  • Programação  (106)
    • CSS  (20)
    • html  (7)
    • javascript  (36)
      • jQuery  (7)
      • yui  (2)
    • php  (44)
      • icephp  (4)
    • plugin  (3)
    • python  (5)
    • sql  (9)
    • tableless  (18)
    • wordpress  (2)
    • xHTML  (23)
  • Tecnologia  (70)
    • Semântica  (16)
    • Tutorial  (25)
    • video  (8)
      • video-tutorial  (5)
    • Windows  (4)
  • Trabalho  (33)
    • cases  (4)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • Vá com calma
  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!
  • Até mais e obrigado pela salada

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho Tutorial twitter visie web wordpress

Conteúdo

  • Artigos
    • JavaScript (parte 1)
  • Códigos prontos
    • Bancos, bancos e mais bancos…
    • Classe sqlsimples e sql – PHP
    • PHP: Função __auloload()
  • Guia Rápido jQuery
  • PagSeguro
  • Quem é dgmike?
PagSeguro Powered by WordPress | “Blend” from Spectacu.la WP Themes Club