|
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: 17618
|
|
Voltar ao Topo |
|
|
rodrigoprado Colaborador
Registrado: Terça-Feira, 24 de Mai de 2005 Mensagens: 1074 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: 17618
|
Enviada: Qua Out 09, 2019 3:54 pm Assunto: |
|
|
rodrigoprado escreveu: | 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 | Olá rodrigoprado, o problema é que recebo inúmeras lista de excel de vários clientes que não padronizam, ai tenho que me virar do meu lado aqui para validar tudo. Mais caso não tenha algo nativo no delphi eu vou ter que criar um método para validar isso.
Obrigado. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
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 seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
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: 17618
|
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 seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
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: 17618
|
Enviada: Qui Out 10, 2019 9:39 am Assunto: |
|
|
imex escreveu: | 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 | Agora entendi Imex.
Obrigado. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|