 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17446
|
|
Voltar ao Topo |
|
 |
rodrigoprado Colaborador

Registrado: Terça-Feira, 24 de Mai de 2005 Mensagens: 1062 Localização: Curitiba/PR
|
Enviada: Qua Out 09, 2019 3:48 pm Assunto: |
|
|
Poderia sugerir, no excel, vir tratado isso no formato 'dd/mm/aaaa', assim não precisaria se preocupar com codificações, não custa nada do outro lado já enviar no formato correto _________________ - Compartilhe seus conhecimentos - |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17446
|
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17446
|
Enviada: Qua Out 09, 2019 4:41 pm Assunto: |
|
|
Não sei se um tipo de gambiarra dessa resolve.
Código: | /// Verifica data
/// Se o retorno for 6 digitos sem as barras é sinal que o ano esta com dois digitos
/// ai precisa converter porém ver se o período é maior que ano 2000
if Length(StrNumber(ConvDataBanco)) = 6 then
begin
dData := StrToDateDef(ConvDataBanco, 0);
if dData > Date then
ConvDataBanco := Copy(DateToStr(dData), 1, 2) + '/' +
Copy(DateToStr(dData), 4, 2) + '/' + '19' +
Copy(DateToStr(dData), 9, 2);
end; |
O que fiz foi: Verifico o tamanho do retorno usando um metódo chamado strnumber que retira tudo que não for numero e retorna numeros, ai vejo se o tamanho esta em 6 ai numa variavel tipo data converto o valor no caso como disse acima o retorno voltou em 04/05/2052, ai comparo se a data for maior que a data atual ai faço esta troca de 20, para 19.
Não sei se vai dar certo, mais não sei como fazer de outra forma. _________________ Jogo quiz seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.descubraresposta
https://play.google.com/store/apps/details?id=br.com.couldsys.desafiobiblico |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11565
|
Enviada: Qua Out 09, 2019 4:48 pm Assunto: |
|
|
Boa tarde,
Experimente configurar a variável global TwoDigitYearCenturyWindow.
O valor dessa variável é subtraído do ano atual para a definição do século.
Considerando que estamos em 2019 e que o seu valor padrão é 50, temos 2019 - 50 = 1969, então entre 69 e 99 é convertido para 19 e o restante para 20.
Se você por exemplo alterar o valor dessa variável para 80, entre 39 e 99 será convertido para 19.
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos!bonsucesso-residencial-apartamento |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17446
|
Enviada: Qui Out 10, 2019 8:46 am Assunto: |
|
|
imex escreveu: | Boa tarde,
Experimente configurar a variável global TwoDigitYearCenturyWindow.
O valor dessa variável é subtraído do ano atual para a definição do século.
Considerando que estamos em 2019 e que o seu valor padrão é 50, temos 2019 - 50 = 1969, então entre 69 e 99 é convertido para 19 e o restante para 20.
Se você por exemplo alterar o valor dessa variável para 80, entre 39 e 99 será convertido para 19.
Espero que ajude
_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos!bonsucesso-residencial-apartamento |
Bom dia Imex, então até fiz o teste cfe abaixo
Código: | procedure TForm1.Button1Click(Sender: TObject);
var
myDate : TDateTime;
formattedDate : string;
begin
// Set up a date from a 2 digit year using the default threshold
myDate := StrToDate('09/05/30');
ShowMessage('09/05/30 using default threshold = '+DateToStr(myDate));
// Now change the default threshold to 80 :
// 2002 (at time of writing) - 80 gives 1922
// 30 is above 22, so 1900 century is chosen
TwoDigitYearCenturyWindow := 80;
myDate := StrToDate('09/05/30');
ShowMessage('09/05/30 using override threshold = '+DateToStr(myDate));
end; |
Mais não deu certo não o exemplo, outra coisa consegui fazer apenas no D7 que esta na unit SysUtils, ja no XE6 que eu uso não reconhece o TwoDigitYearCenturyWindow e não sei se ainda existe ou meu XE6 esta sem ele.
De qualquer forma no exemplo acima mostrado ficou 2030 os dois modos.
Fonte
http://www.delphibasics.co.uk/RTL.asp?Name=TwoDigitYearCenturyWindow _________________ Jogo quiz seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.descubraresposta
https://play.google.com/store/apps/details?id=br.com.couldsys.desafiobiblico |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11565
|
Enviada: Qui Out 10, 2019 9:25 am Assunto: |
|
|
Bom dia,
Nas versões mais novas do Delphi a TwoDigitYearCenturyWindow está dentro do record TFormatSettings. Experimente configurar a variável global FormatSettings.TwoDigitYearCenturyWindow.
Sobre o seu teste, como estamos em 2019, se você configurar o valor para 80 será considerado 1900 a partir de 39. Se você por exemplo aumentar para 90 será a partir de 29, ou se aumentar para 99 será a partir de 20.
Espero que ajude |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17446
|
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|