Trabalhar com datas e horas no Flash pode ser muito útil de acordo com o aplicativo que estamos desenvolvendo. Existem várias aplicações para esses dados, como controle de conteúdo, podemos disparar eventos em datas pré programadas, coisas que vão desde um simples relógio digital a eventos mais complexos.
Vou abordar neste Tutorial algumas formas possíveis de se trabalhar com esse tipo de dado.
Mas antes vamos conhecer algumas tarefas comuns de datas e horas.
Trabalhar com objetos de Date:
Para criar um objeto de Date é muito simples. Veja o exemplo:
Sem parâmetros no construtor teremos uma resposta base com data e hora atuais.
var _data:Date = new Date();
trace(_data); //Mon May 16 11:31:53 GMT-0300 2011
Se colocarmos um único parâmetro, o construtor Date() irá devolvê-lo como milissegundos e a data de 1 de janeiro de 1970 como mostrar no exemplo abaixo.
// milissegundos por dia
var _mls:int = 1000 * 60 * 60 * 24;
var _data:Date = new Date(_mls);
trace(_data) // Thu Jan 1 22:00:00 GMT-0200 1970
Acesso a unidades individuais da data e hora:
Definindo uma data e entendendo os parâmetros:
var _data:Date = new Date(2011, 4, 16, 11, 45, 30, 0);
trace(_data); //Mon May 16 11:45:30 GMT-0300 2011
Vamos entender como tudo funciona:
2011 – aponta o ano;
4 – aponta o mês começa a contar do 0;
16 – aponta o dia do mês;
11 – aponta a hora;
45 – aponta os minutos;
30 – aponta os segundos;
0 – aponta os milissegundos;
Podemos obter valores da nossa unidade de tempo através de suas propriedades:
fullYear, month (de 0 a 11), date (de 1 a 31), Day, hours, minutes, seconds, milliseconds.
Cálculos aritméticos com data e hora:
Para que serve isso?
Já me fiz essa pergunta, RS.
Bom quando vamos criar um relógio digital ou um contador de data regressivo, precisamos realizar cálculos aritméticos para chegar em um determinado resultado. Para facilitar nosso trabalho podemos criar algumas constantes para armazenar valores que irão nos auxiliar. Veja o exemplo:
// Encontrar milissegundos por minuto:
var _mlsM:int = 1000 * 60;
// Econtrar milissegundos por hora:
var _mlsH:int = 1000 * 60 * 60;
// Encontrar milissegundos por dia:
var _mlsD:int = 1000 * 60 * 60 *24;
Exemplo:
var _mlsM:int = 1000 * 60;
var _mlsH:int = 1000 * 60 * 60;
var _mlsD:int = 1000 * 60 * 60 * 24;
// Pegamos a data atual
var _data:Date = new Date();
// acrescentar o periodo de 30 dias
var _data2:Date = new Date(_data.getTime() + (30 * _mlsD));
trace(_data2); // Wed Jun 15 15:33:59 GMT-0300 2011
Conversão entre fusos horários:
Neste tópico veremos como converter o fuso horário. Issó é útil para calcular com mais precisar horários em lugares diferentes. Precisei de algo semelhante em um projeto que desenvolvi há algum tempo onde eu tive que montar 5 relógios e cada um mostrava a hora em um fuso horário diferente.
Para que possamos fazer a conversão do fuso horário primeiro temos que calcular o valor do fuso horário em milissegundos.
// Pegamos a data atual
var _data:Date = new Date(“Wed Jun 15 15:59:20 GMT-0300 2011″);
// convertendo fuso horário em milissegundos
var _fmls:Number = _data.getTimezoneOffset() * 60 * 1000;
_data.setTime(_data.getTime() + _fmls);
trace(_data); //Wed Jun 15 18:59:20 GMT-0300 2011
Abordarei apenas um item que é o Timer.
Usaremos ele para a criação de um Relógio em um tutorial posterior.
Timer
Uma das melhores formas de se manipular funções de tempo é usar a Classe Timer.
É simples e de fácil entendimento. Então vamos ver um exemplo.
package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class calculaTempo extends Sprite
{
public function calculaTempo()
{
// constructor code
// criando novo timer
var _tempo:Timer = new Timer(1000, 5);// repetirá a cada segundo por 5 vezes
// eventos
_tempo.addEventListener(TimerEvent.TIMER, _conta);
_tempo.addEventListener(TimerEvent.TIMER_COMPLETE, _terminou);
// startando o timer
_tempo.start();
}
public function _conta(e:TimerEvent):void
{
// retornará o tempo
trace(“Contou ” + e.target.currentCount);
}
public function _terminou(e:TimerEvent):void
{
// retornara somente quando terminar o ciclo de 5 disparos
trace(“Terminou”);
}
}
}
Por hora é isso ai pessoal espero ter esclarecido um pouco mais sobre o uso dessa classe e em breve iremos criar um relógio usando esses conhecimentos. Até o próximo.
Você também pode conferir esse tutorial e muito mais em meu blog: diegowebmotion.worpress.com
Últimos Comentários