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