Build Brasil
Treinamentos FCamara
Explorando Data/Hora
Especificações: Visual Studio 2005 Professional; Linguagem: CSharp.

Abdul Hade
Nesse artigo mostro alguns exemplos do que pode ser feito com um campo data/hora.

Diferenças entre datas
Para obtermos intervalo entre duas datas primeiramente, criamos um novo projeto, e no formulário, adicionamos dois DateTimePicker, dois Label e um Button, de modo que fique como a Figura 1.
 

Figura 1.

No botão, insira o seguinte código-fonte:

//Cria uma variável do tipo DateTime a preenche ela com o valor do DateTimePicker
DateTime MesAno = Convert.ToDateTime(MesAnoDateTimePicker.Text);
Total de dias de um mês especifico
É apenas uma linha. Existe uma classe para isso:
Vamos criar uma form e deixá-lo igual à Figura 2


Figura 2.

E insira o código abaixo no botão:

Soma de Horas: Essa é um pouco complicada, mas é muito interessante. Primeiro crie um form, deixando-o como a figura3:

Figura 3.

Depois adicione a função abaixo a sua classe de negócios:

//Com o System.DateTime.DaysInMonth(Ano selecionado no objeto, Mes selecionado no objeto)
MessageBox.Show(System.DateTime.DaysInMonth(MesAno.Year, MesAno.Month).ToString());

 

private string SomaHoras(DateTime Data1, DateTime Data2) { Pronto! Fico por aqui, até o próximo artigo.

Conclusões
Enfim, com data e hora podemos fazer uma infinidade operações, mais para frente faremos isso.

            /*Variáveis e os valores para o cálculo */ 
            int Hora1 = Data1.Hour, Hora2 = Data2.Hour, Min1 = Data1.Minute, 
                Min2 = Data2.Minute, Seg1 = Data1.Second, Seg2 = Data2.Second, 
                TotalHoras = 0, TotalMin = 0, TotalSeg = 0;

            /*Atribui a soma dos segundos a TotalSeg*/ 
            TotalSeg = Seg1 + Seg2; 

           
/*Se o total da soma for igual ou maior o que 60, então é considerado como minuto*/ 
            if (TotalSeg >= 60) {

                /*Se sim, é jogado o valor '1'*/ 
                TotalMin = 1;

                /*e lhe é subtraido 60 segundos*/ 
                TotalSeg = TotalSeg - 60; 
            }

            /*Soma entre os minutos e teremos o total de minutos*/ 
            TotalMin += Min1 + Min2;

            /*Se o total da soma for igual ou maior o que 60, então é considerado como Hora*/ 
            if (TotalMin >= 60) {

                /*Se sim, é jogado o valor '1'*/ 
                TotalHoras = 1;

                /*e lhe é subtraido 60 minutos*/ 
                TotalMin = TotalMin - 60;

            }

            /*Depois somamos as horas, se quizer fazer mais um if para as horas fique a vontade*/ 
            TotalHoras += Hora1 + Hora2;

            /*Retorna a soma entre as duas horas*/ 
            return (string.Format("{0}:{1}:{2}", TotalHoras.ToString("00"), TotalMin.ToString("00"), TotalSeg.ToString("00")));

        }

Agora adicione esse código ao botão:

public partial class FormDtHr : Form  {

        //Declara a sua classe de negócios para acessar as funçoes. 
        ClassNegocios Funcoes = new ClassNegocios(); 

        private
void SomarButton_Click(object sender, EventArgs e) {

           /*Mostra em uma mensagem o retorno da função que foi criada, passando as duas datas*/ 
           MessageBox.Show(Funcoes.SomaHoras(Convert.ToDateTime(Vl1DateTimePicker.Text), Convert.ToDateTime(Vl2DateTimePicker.Text)).ToString());

        }

 

//Cria uma variavel do tipo DateTime, que será preenchida com um valor da
//tabela, que será convertido em Datetime.
DateTime DTInicial = Convert.ToDateTime(IniDateTimePicker.Text);

//Cria uma variavel do tipo TimeSpan, que receberá a subtração
//DTFinal - DTInicial = DTResultado.
TimeSpan DTResultado = DTFinal.Subtract(DTInicial);

// Mostra uma mensagem intervalo entre as duas datas.
MessageBox.Show(DTResultado.ToString());

// Utilizei o DateTimePicker, por que com ele, não tenho problema com rotinas para validação de data.


Posted 2 Jun 2009 7:53 by Abdul Hade
Copyright© Build Brasil 2004 - 2009 - Todos os Direitos Reservados
Powered by Community Server (Commercial Edition), by Telligent Systems