Formatando e Somando Datas no Flex

uma dúvida constante para quem começa a aprender flex (neste caso Action Script) é como trabalhar com datas, isso tem uma explicação, primeiro como qualquer linguagem de programação o formato das datas são YYYY/MM/DD (US) enquanto no brasil o formato é DD/MM/YYYY (PT/BR), ou seja, para gravar uma data no banco de dados (Mysql por exemplo) você vai precisar pegar a data no formato PT/BR e passar para US e armezenar no banco, quando for mostrar na tela tem que ser feito o inverso para mostrar PT/BR e não US como foi gravado, esse problema também acontence com padrões de moeda que veremos em um outro post....

Outro problema em relação a data no flex (Action Script) é em relação a somar datas, já que para somar datas não é fácil como é no java que temos uma classe Calendar que facilita nosso serviço.

então vamos fazer um exemplo que vai resolver nossos dois problemas, vamos a prática.

primeiro vamos criar um classe onde vai conter a formatação e soma das datas, coloquei o nome de FuncDate, sem criatividade para nomear no momento icon sad Formatando e Somando Datas no Flex .

Classe FuncDate.as

ACTIONSCRIPT:
  1. import mx.formatters.DateFormatter;
  2.  
  3. public class FuncDate
  4. {
  5.  
  6. public static function stringToDate(data:String):Date{
  7.  
  8. if (data != "") {
  9. var novaData:String = data.substring(3,5) +"/"+ data.substring(0,2) +"/"+ data.substring(6,10);
  10. return new Date(novaData);
  11.  
  12. }
  13. else {
  14. return null;
  15. }
  16.  
  17. }
  18.  
  19. public static function dateToString(data:Date):String{
  20.  
  21. var format:DateFormatter = new DateFormatter();
  22. format.formatString = "DD/MM/YYYY";
  23.  
  24. return format.format(data);
  25.  
  26. }
  27.  
  28. public static function somarDiasData(date:Date,dias:int):Date{
  29. /*esse cara é que faz toda a diferença
  30. ele que faz todo o calculo, exemplo que já vi no guj e recentemente no FlexDev */
  31. var millisecondsPerDay:int = 1000 * 60 * 60 * 24;
  32.  
  33. var resultado:Date;
  34.  
  35. resultado = new Date(date.getTime()
  36. + (dias * millisecondsPerDay));
  37.  
  38. return resultado;
  39.  
  40. }
  41.  
  42. }

Explicando:

stringToDate -> pega a string que está no nosso componente DateField e passa para o formato correto de YYYY/MM/DD.

dateToString -> é a função que vai receber a data no US e transformar para o Formato PT/BR, usamos aqui uma função DateFormatter que agiliza e muito na formatação de datas.

somarDiasDatas -> função que vai efetivamente fazer as somas que desajarmos na nossa data, recebe como parametro uma data e a quantidade de dias que queremos somar, nesta função o mais importante e diferente é que tem uma variável que recentemente encontrei no flexdev um post explicando :

ACTIONSCRIPT:
  1. var millisecondsPerDay:int = 1000 * 60 * 60 * 24;

esta variavel que é que faz o calculo de uma forma correta, pois tem precisão de milesegundos...

bem é isso, agora é só ver esse exemplo que usa todas essas opções e praticar nos seus projetos...

De brinde vai um componente de data que já traz no formato em PT/BR, bons estudos...

para ver o código fonte e fazer o download -> botão direito do mouse -> view source.

{lang: 'pt-BR'}

You can leave a response, or trackback from your own site.
Subscribe to RSS Feed Follow me on Twitter!