Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Converter String em DateTime


Gabriel Cabral

Pergunta

E ae, pessoal..

Eu já li vários tópicos sobre este assunto mas ainda não consegui resolver meu problema..

Estou lidando com um cálculo que envolve strings e datas, para verificação de senha de um programa..

Em alguns lugares tenho datas gravadas no formato dd/mm/yy, e para mudar isso para dd/mm/yyyy, faço a seguinte verificação:

if (sUso[9] = '') AND (sUso[10] = '') then
begin
  vUso := StrToDateTime(FormatDateTime('dd/MM/yyyy', StrToDateTime(Copy(sUso,1,6)+'20'+Copy(sUso,7,8))));
end;

Lembrando que:

* vUso é do tipo DateTime

* sUso é do tipo String

* sUso[1] é o primeiro dígito de uma data, sUso[2] é o segundo, e assim por diante, até o sUso[10].

Então se o sUso[9] e o sUso[10] estiverem vazios, ou seja, se a data estiver no formato com 2 dígitos no ano, eu acrescento 20 no início do ano, para ficar "dois mil e" o que já tem.

Mas continua dando um erro de conversão:

Project winsuperm.exe raised exception class EConvertError with message "24/03/2010

A mensagem de erro é exatamente essa.... tanto é que não entendi aquelas aspas ali.

alguém consegue me ajudar?

Obrigado

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Project winsuperm.exe raised exception class EConvertError with message "24/03/2010

A mensagem de erro é exatamente essa.... tanto é que não entendi aquelas aspas ali.

Erro de conversão ... as aspas indica que o valor da string obtida não pode ser convertida para data e hora

StrToDateTime(Copy(sUso,1,6)+'20'+Copy(sUso,7,8))));

o correto seria

procedure TForm1.Button1Click(Sender: TObject);
var sUso : string; vUso : TDate;
begin
   sUso := '';
   sUso := '12/10/10';

   if (sUso[9] = '') AND (sUso[10] = '') then
      begin
         vUso := StrToDate(FormatDateTime('dd/MM/yyyy', StrToDate(Copy(sUso,1,6)+'20'+Copy(sUso,7,8))));
         showmessage(datetostr(vUso));
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Mas, no caso aqui, a string obtida é '24/03/2010'

ela não pode ser convertida pra TDateTime?

Troquei de TDateTime pra TDate, conforme você disse que seria o correto, mas ainda dá o erro

a string '24/03/2010 10:54:00' pode ser convertida em TDateTime

execute somente o código que te passei e veja se funciona, depois voce faz a adptação necessaria ao seu código

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz os testes conforme o Jhonas te passou e funcionou corretamente....

olha só, mesmo com DateTime ele funciona:

procedure TForm1.Button1Click(Sender: TObject);
var
sUso : string; vUso : TDateTime;
begin
   sUso := '';
   sUso := '29/03/10';

   if (sUso[9] = '') AND (sUso[10] = '') then
      begin
         vUso := StrToDateTime(FormatDateTime('dd/MM/yyyy', StrToDate(Copy(sUso,1,6)+'20'+Copy(sUso,7,8))));
         showmessage(datetostr(vUso));
      end;
end;

Testa exatamente como está acima...

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui, o sUso está recebendo uma string de uma data descriptografada do banco.

aí o vUso tem que receber essa data em formato de data mesmo... não em string... só foi passado pra string pra criptografar...

Mas não deu certo mesmo desse jeito... de nenhum jeito deu certo ainda.

O curioso é que depois dessa mensagem de erro que aparece, se eu continuar, aparece uma caixa de texto acusando erro e escrito '24/03/2010

tem uma aspa simples somente no início da mensagem.... isso pode significar alguma coisa ou não?

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

  • 0

Percebi que o erro está na utilização da função Copy.

Onde coloco Copy(sUso,7,8), o correto é Copy(sUso,7,2)

Muito obrigado por quebrarem a cabeça junto comigo e desculpa tomar o tempo de vocês.

Valeu

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...