none
Como saber se uma data está dentro de um determinado período? RRS feed

  • Pergunta

  • Olá a todos.

    Bem, estou com o seguinte problema:

    Tenho um WebForm onde possuo 3 TextBox nos quais insiro datas.

    Algo como:

    TxtDataInicio, TxtDataFim e TxtDataComparacao todos no formato dd/mm/aaaa

    O problema é que eu preciso saber se o TxtDataComparacao está entre o TxtDataInicio e TxtDataFim... Tipo, como faço para saber se 26/07/2010 está entre 23/07/2010 e 30/07/2010 e retornar algo como True (dentro do periódo) ou False (fora do período)?

    Alguém sabe como proceder? Agradeço desde já!

    (Asp.net, VS2k8, Vb.Net, C#)

    terça-feira, 27 de julho de 2010 01:47

Respostas

  • Olá, você precisa fazer isso no client side(js) ou no server side ( com c#)?

    Eu sugiro usar dois RangeValidator's.

    Controles:

    <asp:TextBox runat="server" ID="txtDataInicio" /> 
    <asp:TextBox runat="server" ID="txtDataMeio" /> 
    <asp:TextBox runat="server" ID="txtDataFim" /> 

     

    Validação Início

     

    <asp:CompareValidator ID="CompareValidator1" runat="server" 
    ControlToCompare="txtDataInicio" ControlToValidate="txtDataMeio"
    Type="Date" Operator="GreaterThan"
    ErrorMessage="Data meio deve ser maior que a inicio"></asp:CompareValidator>

     

    Validação Termino

     

    <asp:CompareValidator ID="CompareValidator2" runat="server" 
    ControlToCompare="txtDataFim" ControlToValidate="txtDataMeio"
    Type="Date" Operator="LessThan"
    ErrorMessage="Data meio deve ser menor que a final"></asp:CompareValidator>

    Agora, se vc só precisa de um metodo,

    pode faze-lo recebendo DateTime

    C#

     

    static private bool VerificaRange(DateTime dataInicio, DateTime dataFim, DateTime dataAComparar)
    {
      if (dataInicio <= dataAComparar && dataAComparar <= dataFim)
        return true;
      else
        return false;
    }

     

    ou string e tentando converter

     

    static private bool VerificaRange(string dataInicio, string dataFim, string dataAComparar)
    {
      DateTime dtInicio;
      DateTime dtMeio;
      DateTime dtFim;
    
          
      bool data1= DateTime.TryParse(dataInicio,out dtInicio);
      bool data2 = DateTime.TryParse(dataFim, out dtFim);
      bool data3 = DateTime.TryParse(dataAComparar, out dtMeio);
    
      if (data1 && data2 && data3)
      {
        if (dtInicio <= dtMeio && dtMeio<= dtFim)
          return true;
        else
          return false;
      }
      else
      {
        //erro de data inválida
        throw new DataInvalida();
      }
    }

     

    Espero ter te ajudado


     


    Rodolfo F. Jr http://rodolfojunior.com
    terça-feira, 27 de julho de 2010 02:03

Todas as Respostas

  • Olá, você precisa fazer isso no client side(js) ou no server side ( com c#)?

    Eu sugiro usar dois RangeValidator's.

    Controles:

    <asp:TextBox runat="server" ID="txtDataInicio" /> 
    <asp:TextBox runat="server" ID="txtDataMeio" /> 
    <asp:TextBox runat="server" ID="txtDataFim" /> 

     

    Validação Início

     

    <asp:CompareValidator ID="CompareValidator1" runat="server" 
    ControlToCompare="txtDataInicio" ControlToValidate="txtDataMeio"
    Type="Date" Operator="GreaterThan"
    ErrorMessage="Data meio deve ser maior que a inicio"></asp:CompareValidator>

     

    Validação Termino

     

    <asp:CompareValidator ID="CompareValidator2" runat="server" 
    ControlToCompare="txtDataFim" ControlToValidate="txtDataMeio"
    Type="Date" Operator="LessThan"
    ErrorMessage="Data meio deve ser menor que a final"></asp:CompareValidator>

    Agora, se vc só precisa de um metodo,

    pode faze-lo recebendo DateTime

    C#

     

    static private bool VerificaRange(DateTime dataInicio, DateTime dataFim, DateTime dataAComparar)
    {
      if (dataInicio <= dataAComparar && dataAComparar <= dataFim)
        return true;
      else
        return false;
    }

     

    ou string e tentando converter

     

    static private bool VerificaRange(string dataInicio, string dataFim, string dataAComparar)
    {
      DateTime dtInicio;
      DateTime dtMeio;
      DateTime dtFim;
    
          
      bool data1= DateTime.TryParse(dataInicio,out dtInicio);
      bool data2 = DateTime.TryParse(dataFim, out dtFim);
      bool data3 = DateTime.TryParse(dataAComparar, out dtMeio);
    
      if (data1 && data2 && data3)
      {
        if (dtInicio <= dtMeio && dtMeio<= dtFim)
          return true;
        else
          return false;
      }
      else
      {
        //erro de data inválida
        throw new DataInvalida();
      }
    }

     

    Espero ter te ajudado


     


    Rodolfo F. Jr http://rodolfojunior.com
    terça-feira, 27 de julho de 2010 02:03
  • Olá! Amigo, é exatamente isso que eu preciso! =)

    Vou analisar e descobrir qual é melhor para o meu caso.

    Mais uma vez, obrigado!

    terça-feira, 27 de julho de 2010 16:58