none
Trabalhar com datas retroativas RRS feed

  • Pergunta

  • Preciso fazer um método que me retorne duas datas: A Atual e outra com dez dias anteriores. A minha dúvida é que nos fins de semana, não deve ser contado, ou seja, são dez dias anteriores comerciais. Estou pegando nos fins de semana.
    quarta-feira, 20 de março de 2013 17:28

Respostas

  • Olá,

    Use o FluentDateTime

    Essa biblioteca adiciona extensões no tipo DateTime que permitem fazer exatamente o que você quer:

    var data = DateTime.Now.SubtractBusinessDays(10);

    • Sugerido como Resposta Fabio Alves Borges Rodrigues segunda-feira, 15 de abril de 2013 19:55
    • Marcado como Resposta pnet segunda-feira, 15 de abril de 2013 21:08
    quarta-feira, 20 de março de 2013 18:37
  • Apenas por propósito informativo, e caso não esteja interessado em instalar a dll, o método desta biblioteca é implementado da seguinte forma:

    public static DateTime AddBusinessDays(this DateTime current, int days)
    {
    	var sign = Math.Sign(days);
    	var unsignedDays = Math.Abs(days);
    	for (var i = 0; i < unsignedDays; i++)
    	{
    		do
    		{
    			current = current.AddDays(sign);
    		}
    		while (current.DayOfWeek == DayOfWeek.Saturday ||
    			   current.DayOfWeek == DayOfWeek.Sunday);
    	}
    	return current;
    }
    
    public static DateTime SubtractBusinessDays(this DateTime current, int days)
    {
    	return AddBusinessDays(current, -days);
    }


    Leonardo Lima da Silva

    • Marcado como Resposta pnet segunda-feira, 15 de abril de 2013 21:08
    segunda-feira, 15 de abril de 2013 19:45

Todas as Respostas

  • Olá,

    Use o FluentDateTime

    Essa biblioteca adiciona extensões no tipo DateTime que permitem fazer exatamente o que você quer:

    var data = DateTime.Now.SubtractBusinessDays(10);

    • Sugerido como Resposta Fabio Alves Borges Rodrigues segunda-feira, 15 de abril de 2013 19:55
    • Marcado como Resposta pnet segunda-feira, 15 de abril de 2013 21:08
    quarta-feira, 20 de março de 2013 18:37
  • Apenas por propósito informativo, e caso não esteja interessado em instalar a dll, o método desta biblioteca é implementado da seguinte forma:

    public static DateTime AddBusinessDays(this DateTime current, int days)
    {
    	var sign = Math.Sign(days);
    	var unsignedDays = Math.Abs(days);
    	for (var i = 0; i < unsignedDays; i++)
    	{
    		do
    		{
    			current = current.AddDays(sign);
    		}
    		while (current.DayOfWeek == DayOfWeek.Saturday ||
    			   current.DayOfWeek == DayOfWeek.Sunday);
    	}
    	return current;
    }
    
    public static DateTime SubtractBusinessDays(this DateTime current, int days)
    {
    	return AddBusinessDays(current, -days);
    }


    Leonardo Lima da Silva

    • Marcado como Resposta pnet segunda-feira, 15 de abril de 2013 21:08
    segunda-feira, 15 de abril de 2013 19:45