ASP .NET - Calculando a diferença entre datas
Hoje veremos como calcular a diferença entre duas datas em uma aplicação Web Forms. |
Vamos supor que você deseja calcular a diferença entre duas datas em uma aplicação ASP .NET Web Forms. (Sim legado !!)
Criando o projeto no VS 2017 Community
Usando o Visual Studio 2017 Community no menu File clique em New Project;
A seguir selecione Visual C# -> Web-> ASP .NET Application(.NET Framework);
Informe um nome a seu gosto. Para o exemplo vou informar WebF_DifDatas;
A seguir escolha o template Empty e marque Web Forms clicando a seguir no botão OK:
Vamos incluir um novo WebForm com o nome Default.aspx no projeto via menu Project -> Add New Item;
Nosso projeto vai usar o controle Calendar Extender do Ajax Control ToolKit.
Para instalar o pacote do Ajax Control ToolKit acesse este link : http://devexpress.com/act
Após instalar siga as instruções deste artigo para incluir os controles no VS 2017 : ASP .NET AJAX - Usando o controle Calendar Extender.
Agora com os controles instalados vamos definir o código do WebForm na página Default.aspx.
- Inclua na página os controles :
Abaixo o código completo da página Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebF_DifDatas.Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Calcula a diferença entre Datas</title>
</head>
<body style="background-color:darksalmon ">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<table style="padding: 30px; color: Black; margin-top: 30px">
<tr>
<td>
Data Inicial
</td>
<td>
<asp:TextBox ID="txtDataInicial" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="txtDataInicial_CalendarExtender" runat="server" Enabled="True"
TargetControlID="txtDataInicial" Format="dd/MM/yyyy"></asp:CalendarExtender>
</td>
<td>
Data Final
</td>
<td>
<asp:TextBox ID="txtDataFinal" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="txtDataFinal_CalendarExtender" runat="server" Enabled="True"
TargetControlID="txtDataFinal" Format="dd/MM/yyyy"></asp:CalendarExtender>
</td>
</tr>
</table>
<div style="margin-left: 180px">
<asp:Button ID="btncalcular" runat="server" Text="Calcular" OnClick="btncalculate_Click" Height="32px" Width="179px" />
</div>
<table style="background-color: burlywood; color: Black; padding: 30px; margin-top: 20px;
margin-left: 15px" id="tblResultados" runat="server">
<tr>
<td>
Resultado : </td>
<td id="tdAno" runat="server">
</td>
</tr>
</table>
</form>
</body>
</html> |
Agora no arquivo code-behind Default.aspx.cs inclua o código abaixo:
using System;
namespace WebF_DifDatas
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//exibe a tabela
tblResultados.Visible = false;
}
protected void btncalculate_Click(object sender, EventArgs e)
{
if (txtDataInicial.Text != "" && txtDataFinal.Text != "")
{
//armazena as datas
DateTime dataInicial = Convert.ToDateTime(txtDataInicial.Text);
DateTime dataFinal = Convert.ToDateTime(txtDataFinal.Text);
//calcula anos
int Anos = new DateTime(dataFinal.Subtract(dataInicial).Ticks).Year - 1;
DateTime AnosTranscorridos = dataInicial.AddYears(Anos);
//calcula meses
int Meses = 0;
for (int i = 1; i <= 12; i++)
{
if (AnosTranscorridos.AddMonths(i) == dataFinal)
{
Meses = i;
break;
}
else if (AnosTranscorridos.AddMonths(i) >= dataFinal)
{
Meses = i - 1;
break;
}
}
//calcula dias
int Dias = dataFinal.Subtract(AnosTranscorridos.AddMonths(Meses)).Days;
//atribuindo os valores
tdAno.InnerText = Anos + " ano(s) " + Meses + " mes(es) " + Dias + " dia(s)";
tblResultados.Visible = true;
}
}
}
}
|
Agora é só alegria...
Executando o projeto iremos obter o seguinte resultado:
Pegue o projeto aqui : WebF_DifDatas.zip (sem as referências)
"Porque o Senhor é justo, e ama a justiça; o seu rosto
olha para os retos."
Salmos 11:7
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Calculando a idade com precisão - Macoratti
Algumas funções com datas... - Macoratti
Cálculo com datas e horas - Macoratti
VB .NET - Calculando a diferença entre duas datas ... - Macoratti