ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

16 de janeiro de 2023

Quick Tips - Delphi: Trabalhando com os métodos EncodeDate e DecodeDate

encode decode date

Olá gente boa, tudo bem com vocês?

Na dica rápida de hoje, vamos abordar sobre dois métodos que podem ser úteis em suas rotinas do dia a dia. Estamos falando dos métodos "EncodeDate" e "DecodeDate".

EncodeDate

O método EncodeDate, presente na unit System.SysUtils, é uma função que, passados por parâmetro separadamente o dia, mês e ano, retornará uma data completa do tipo TDateTime.

Em determinados momentos, as vezes se torna necessário desmontarmos uma data, para efetuar cálculos ou qualquer outro tratamento com datas, como por exemplo, calcular o dia útil de uma determinada data para vencimento de faturas geradas no sistema em uma rotina de faturamento de venda por exemplo, e após isso, precisamos montar novamente a data com o dia correto. 

Em um cenário como esse, entra em ação o método EncodeDate, que faz justamente isso, ele monta uma data completa, unindo o dia, mês e ano passados por parâmetro.

Algumas considerações acerca do método EncodeDate são:

  • O valor referente ao ano passado por parâmetro, deve ser de 1 a 9999;
  • O valor referente ao mês passado por parâmetro, é considerado válido de 1 a 12;
  • O valor referente ao dia, podem ir de 1 a 28, 29, 30 ou 31, dependendo do mês passado por parâmetro, por exemplo, para o mês 02 (fevereiro), podemos ter um cenário de 1 a 28 ou 1 a 29, dependendo do ano, se for bissexto;
Se os valores não estiverem dentro do intervalo, isto é, caso algum valor seja inválido, uma exceção será levantada.

Para vermos o funcionamento desse método na prática, criamos um exemplo que pede ao usuário informar um dia, mês e ano, e no final, o algoritmo exibirá a data completa (montada), de acordo com os dados informados. Segue o código:

encode date


Temos quatro variáveis, sendo uma para o dia, mês e ano do tipo Word, e uma para a data completa que será montada pela função, do tipo TDate (para considerarmos apenas a data, sem a hora), mas poderia ser do tipo TDateTime também, sem nenhum problema.

Após pedir ao usuário para informar cada um desses dados, os mesmos são guardados dentro de suas respectivas variáveis.

Em seguida, chamamos o método EncodeDate repassando esses dados entrados por parâmetro, e o retorno dessa função, será armazenado na variável lData.

Por fim, exibimos na tela a data gerada. Simples, fácil e prático.

Ok, se tem como encodar uma data, também tem como decodar. É nosso próximo assunto.

DecodeDate

Este método, também presente na unit System.SysUtils, faz o inverso do método anterior. Esta procedure, recebe por parâmetro uma data completa, e a mesma é desmontada pelo método, e esse desmembramento é devolvido dentro dos demais parâmetros para dia, mês e ano, que também devem ser passados por parâmetro, ou seja, o método quebra e retorna os valores para dia, mês e ano separadamente, de uma determinada data passada por parâmetro do tipo TDateTime.

  • Se o ano da data for negativo, os valores para dia, mês e ano será ZERO;
Para exemplificarmos na prática, criamos um algoritmo que lê a data atual do computador, e desmonta essa data, para exibirmos em uma mensagem de maneira extensa, segue o código:

decode date

Ao chamarmos o método DecodeDate, passamos por parâmetro, uma chamada para a função Date que retornará para o parâmetro a data atual do computador, logo em seguida, passamos uma variável para ano, mês e dia, que são do tipo Word.
Note que este método é uma procedure, ou seja, não retorna valor. Os valores separados para o dia, mês e ano são devolvido dentro das respectivas variáveis passadas por parâmetro, isso ocorre porque, este método, requer passagem por referência, sendo assim, as variáveis passadas por parâmetro serão manipuladas diretamente dentro do método DecodeDate, ao final de sua execução, as mesmas já vão conter os valores separados.
Por fim, apenas exibimos o conteúdo delas em uma mensagem impressa no console, agregando uma frase personalizada.
Muito bem clipatequeiros de plantão, assim chegamos ao final dessa dica, codifique os exemplos e teste.
Em algum momento esses métodos serão úteis pra você. Alguns programadores por desconhecerem esses métodos, ao precisar separar o mês de uma data por exemplo, recorrem aos famosos métodos Copy e Pos, mas esse malabarismo todo cai por terra, com a utilização desses métodos nativos apresentados nesse artigo.
Um grande abraço, e até a próxima.

Links

- EncodeDate - Embarcadero;
- DecodeDate - Embarcadero;
(Por ClipaTec Informática)

0 comments:

Postar um comentário

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!