Różnica dat w dniach roboczych

0

Witam!

Jak policzyć różnicę pomiędzy dwoma datami, ale nie uwzględniając sobót i niedziel? Czyli jeśli mam dzisiejszą datę w południe i odejmuję piątkową w południe, to w wyniku mam otrzymać 1, a nie 3.
Jak to zrobić?

pozdrawiaMM

0
  • Od liczby wszystkich dni odejmij podwojoną liczbę pełnych tygodni. Nazwijmy tą różnicę S.
  • Oblicz, ile dni zostało w tym pozostałym, niepełnym tygodniu, nazwijmy N.
  • Od numeru dnia tygodnia (pon-1, wt-2 ...) dnia ostatniego odejmij N. Jeśli w wyniku otrzymasz liczbę mniejszą od -1 to do S dodaj 2, jeśli ta różnica wyniesie -1 to do S dodaj tylko 1. W pozostałych przypadkach nic nie dodawaj.

Wynik to S.

0

Jeśli daty nie będą zbyt odległe, to najprostsza chyba jest taka pętla (pseudokod):
Data:=DataPocz+1
Roznica:=0
while (Data<=DataKonc)
id(DzienTygodnia(Data)<>6 And DzienTygodnia(Data)<>7) Roznica++
W przykładzie piszesz południe, jakiego wyniku oczekujesz gdy DataPocz=Sobota 23.59.59,
DataKonc=Poniedziałek 00.00.01 ?

0
adf88 napisał(a)

Wynik to S.

Dzięki. Sprawdzę. Ale wydaje mi się, że kiedyś w VB tak właśnie robiłem.

pozdrawiaMM

0

jak napisać program który liczy ile dni pozostało (lub za ile dni będzię) do podanej z klawiatury daty do dnia twoich urodzin (datę urodzin użytkownik podaje sam).

0
int day = 24;
    int month = 5;

    DateTime birthdayDateThisYear = new DateTime(DateTime.Now.Year, month, day); // urodziny w tym roku
    DateTime birthdayDateNextYear = new DateTime(DateTime.Now.Year + 1, month, day); // urodziny w następnym roku

    DateTime today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
    
    TimeSpan toNextBirthDay;
    if (birthdayDateThisYear >= DateTime.Now) // jeżeli urodziny w tym roku dopiero będą
        toNextBirthDay = birthdayDateThisYear - today;
    else // jeżeli urodziny w tym roku już były, bierzemy pod uwagę urodziny w następnym roku
        toNextBirthDay = birthdayDateNextYear - today;

    int daysToNextBirthDay = toNextBirthDay.Days;

Nie do podanej daty, ale oblicza za ile dni będą następne urodziny. Nie doczytałem, że data ma być podana z klawiatury, ale po prostu odpowiednio zmodyfikuj "today".

No chyba, że też nie o to chodzi, bo ciężko mi zrozumieć twoją wypowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1