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
.
Classe FuncDate.as
-
import mx.formatters.DateFormatter;
-
-
public class FuncDate
-
{
-
-
public static function stringToDate(data:String):Date{
-
-
if (data != "") {
-
var novaData:String = data.substring(3,5) +"/"+ data.substring(0,2) +"/"+ data.substring(6,10);
-
return new Date(novaData);
-
-
}
-
else {
-
return null;
-
}
-
-
}
-
-
public static function dateToString(data:Date):String{
-
-
var format:DateFormatter = new DateFormatter();
-
format.formatString = "DD/MM/YYYY";
-
-
return format.format(data);
-
-
}
-
-
public static function somarDiasData(date:Date,dias:int):Date{
-
/*esse cara é que faz toda a diferença
-
ele que faz todo o calculo, exemplo que já vi no guj e recentemente no FlexDev */
-
var millisecondsPerDay:int = 1000 * 60 * 60 * 24;
-
-
var resultado:Date;
-
-
resultado = new Date(date.getTime()
-
+ (dias * millisecondsPerDay));
-
-
return resultado;
-
-
}
-
-
}
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 :
-
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.




Pingback: Nova Página no meu site “Projetos” - redeRIA | Agregador de noticias, artigos, tutoriais Flex, Flash, JavaFX, AJAX e Rich internet applications em geral!
Pingback: Datas » Bruno bg + ADOBE FLEX