webForumDet fria alternativet

Lägga på arbetsdagar

.NET

2 svar · 399 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#1

Nedan kod är tänkt att lägga på X antal arbetsdagar(måndag-fredag) på ett datum för att sen retunera det nya datumet. Men det vill sig inte.

public static DateTime AddBusinessDays(DateTime startdate, int days)
{
   while (days > 0)
   {
      startdate = startdate.AddDays(1d);
      if (startdate.DayOfWeek != DayOfWeek.Saturday || startdate.DayOfWeek != DayOfWeek.Sunday)
         days--;
   }
   return startdate;
}

Response.Write("+1: " + AddBusinessDays(DateTime.Now, 1).ToShortDateString() + "<br/>");
Response.Write("+2: " + AddBusinessDays(DateTime.Now, 2).ToShortDateString() + "<br/>");
Response.Write("+3: " + AddBusinessDays(DateTime.Now, 3).ToShortDateString() + "<br/>");
Response.Write("+4: " + AddBusinessDays(DateTime.Now, 4).ToShortDateString() + "<br/>");
Response.Write("+5: " + AddBusinessDays(DateTime.Now, 5).ToShortDateString() + "<br/>");
Response.Write("+6: " + AddBusinessDays(DateTime.Now, 6).ToShortDateString() + "<br/>");
Response.Write("+7: " + AddBusinessDays(DateTime.Now, 7).ToShortDateString() + "<br/>");
Response.Write("+8: " + AddBusinessDays(DateTime.Now, 8).ToShortDateString() + "<br/>");
Response.Write("+9: " + AddBusinessDays(DateTime.Now, 9).ToShortDateString() + "<br/>");
Response.Write("+10: " + AddBusinessDays(DateTime.Now, 10).ToShortDateString() + "<br/>");
Response.Write("+11: " + AddBusinessDays(DateTime.Now, 11).ToShortDateString() + "<br/>");
Response.Write("+12: " + AddBusinessDays(DateTime.Now, 12).ToShortDateString() + "<br/>");
Medlem sedan maj 20012 812 inlägg
#2
if (startdate.DayOfWeek != DayOfWeek.Saturday || startdate.DayOfWeek != DayOfWeek.Sunday

Du säger här om dagen är skilt från söndag eller dagen är skilt från lördag, vilket alltid kommer att vara sant. För om dagen är en lördag så är den skilt från söndag och vilkoret är sant.

Du får antingen kontrollera om dagen är en Måndag ELLER Tisdag ELLER Onsdag ELLER Torsdag ELLER Fredag Så fall minskar du days med ett.

Eller så vänder du på uttrycket.

Kontrollera om dagen är en Lördag ELLER Söndag och ta INVERTEN på resultatet

if(!(startdate.DayofWeek == DayOfWeek.Saturday || startdate.DayofWeek == DayOfWeek.Sunday))
   days--;

- M

Medlem sedan sep. 20011 914 inlägg
#3

Det gjorde susen. Tackar. :)

262 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)