Função para devolver data do próximo dia da semana informado C#(CSharp).

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 30/07/2021


Função que devolve data com o próximo dia da semana informado.


Abaixo você vai encontra a função e uma extensão basicamente iguais, a diferença realmente é que uma é utilizada como função e outra como extensão, dependendo de sua preferencia, sua utilidade é simples, suponha que tenha uma data e precise saber que dia será a próxima segunda-feira ou a próximo sábado, com esta função você resolve seu problema rápido e fácil.

As duas utilizam como parâmetro um enum de DayOfWeek, mas fique tranquilo ele faz parte das versões do C# e sua estrutura é mostrada abaixo.

public enum DayOfWeek
{
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6
}


Primeiro apresentamos a função logo abaixo.

Exemplo uso:

DateTime novaData = ProximaData(DateTime.Now, DayOfWeek.Thursday, true);

   /*
    * Exemplo de Conversão de uma List<> para um DataTable
    * 
    * Visite nossa página http://www.codigoexpresso.com.br
    * 
    * by Antonio Azevedo
    *
    * /
    /// <summary>
    /// Extensao de DateTime retorna proxima data de um determinado dia da semana informado ,
    ///
    /// Exemplo :    
    /// DateTime novaData = ProximaData(DateTime.Now, DayOfWeek.Thursday, true);
    /// 
    /// </summary>
    /// <param name="data">Atributo data</param>
    /// <param name="diaSemana">atributo dia da semana
    /// public enum DayOfWeek
    /// {
    ///    Sunday = 0,
    ///    Monday = 1,
    ///    Tuesday = 2,
    ///    Wednesday = 3,
    ///    Thursday = 4,
    ///    Friday = 5,
    ///    Saturday = 6
    /// }
    /// </param>
    /// <param name="consideraProprioDia"> delfaut = false
    /// (true = Quando a data for o proprio dia solicitado busta dta da proxima semana)
    /// (false = Quano a data for o proprio dia solicitado devolve a mesma data)
    /// </param>
    /// <returns>DateTime</returns>
    public static DateTime ProximaData(DateTime data, DayOfWeek diaSemana, Boolean consideraProprioDia = false)
    {
        
        int dia = (int)data.DayOfWeek;

        if (dia < (int)diaSemana)
        {
            data = data.AddDays(((int)diaSemana) - dia);
        }

        if (dia > ((int)diaSemana))
        {
            data = data.AddDays((7 - (dia - ((int)diaSemana))));
        }

        if (dia == (int)diaSemana && consideraProprioDia)
        {
            data = data.AddDays(7);
        }

        return data;
    }
}


Agora a extensão logo abaixo.

Exemplo uso:

DataTime data = new DateTime.Now; DateTime novaData = data.ProximaData(DayOfWeek.Thursday);

   /*
    * Exemplo de Conversão de uma List<> para um DataTable
    * 
    * Visite nossa página http://www.codigoexpresso.com.br
    * 
    * by Antonio Azevedo
    *
    * /
   /// <summary>
    /// Extensao de DateTime retorna proxima data de um determinado dia da semana informado ,
    ///
    /// Exemplo :
    /// DataTime data = new DateTime.Now;
    /// DateTime novaData = data.ProximaData(DayOfWeek.Thursday);
    /// 
    /// </summary>
    /// <param name="data">Atributo data</param>
    /// <param name="diaSemana">atributo dia da semana
    /// public enum DayOfWeek
    /// {
    ///    Sunday = 0,
    ///    Monday = 1,
    ///    Tuesday = 2,
    ///    Wednesday = 3,
    ///    Thursday = 4,
    ///    Friday = 5,
    ///    Saturday = 6
    /// }
    /// </param>
    /// <param name="consideraProprioDia"> delfaut = false
    /// (true = Quando a data for o proprio dia solicitado busta dta da proxima semana)
    /// (false = Quano a data for o proprio dia solicitado devolve a mesma data)
    /// </param>
    /// <returns>DateTime</returns>
    public static DateTime ProximaData(this DateTime data, DayOfWeek diaSemana, Boolean consideraProprioDia = false)
    {
        ;
        int dia = (int)data.DayOfWeek;
        
        if (dia < (int)diaSemana)
        {
            data = data.AddDays(((int)diaSemana) - dia);
        }

        if(dia> ((int)diaSemana))
        {
            data = data.AddDays((7-(dia- ((int)diaSemana))));
        }

        if (dia == (int)diaSemana && consideraProprioDia)
        {
            data = data.AddDays(7);
        }

        return data;
    }


Mais uma vez espero ter ajudado, deixe seu comentário ele é importante para nosso trabalho!



Links Relacionados



Comentários