Wpis z mikrobloga

Skrypt poniżej "nie chce" mi sprawdzać zakresów dat tylko sprawdza konkretny dzień, np. Adrian ma dyżur od 27/01/2023 do 03/02/2023 - gdy ustawię w systemie date na 28/01/2023 i odświeżę stronę to wyświetla informację o braku dyżurów (a przecież w tym czasie ktoś ten dyżur pełni). Jak to napisać żeby skrypt "wiedział", że skoro jest od 27/01/2023 do 03/02/2023 to dyżur jest też w dniu 28/01/2023, itd.?

<script>

// Tworzymy tablicę z datami dla każdego pracownika
let tomek= ["23/01/2023-26/01/2023"];
let adrian = ["27/01/2023-03/02/2023"];
let alan = ["04/02/2023-07/02/2023"];
let tadek = ["08/02/2023-10/02/2023"];
let kuba = ["11/02/2023-14/02/2023"];

// Pobieramy aktualną datę z systemu lub przeglądarki
let currentDate = new Date();

// Ustawiamy datę w formacie dzień/miesiąc/rok
let dd = currentDate.getDate();
let mm = currentDate.getMonth()+1;
let yyyy = currentDate.getFullYear();

if (dd<10) {
dd='0'+dd
}
if (mm<10) {
mm='0'+mm
}

currentDate = dd+'/'+mm+'/'+yyyy;

// Sprawdzamy w jakiej tablicy z datami znajduje się aktualna data
if (tomek.some(date => date.split('-').includes(currentDate))) {
document.write("Dzisiaj dyżur pełni Tomek, numer telefonu: 1");
}
else if (adrian.some(date => date.split('-').includes(currentDate))) {
document.write("Dzisiaj dyżur pełni Adrian, numer telefonu: 2");
}
else if (alan.some(date => date.split('-').includes(currentDate))) {
document.write("Dzisiaj dyżur pełni Alan, numer telefonu: 3");
}
else if (tadek.some(date => date.split('-').includes(currentDate))) {
document.write("Dzisiaj dyżur pełni Tadeusz, numer telefonu: 4");
}
else if (kuba.some(date => date.split('-').includes(currentDate))) {
document.write("Dzisiaj dyżur pełni Kuba, numer telefonu: 5");
}
else
document.write("Dziś nikt nie dyżuruje");
</script>

#programowanie #programista15k #pomocy #kiciochpyta
  • 9
@Xeardo: po pierwsze musisz porównać do siebie obiekty typu Date a nie stringi. Po drugie potrzebujesz ifa sprawdzającego czy podana data jest większa od początku zakresu i drugiego, który sprawdzi czy jest mniejsza od końca:
if początek <= dzisiaj <= koniec
Po trzecie jak dyżur będzie pełnić więcej niż jedna osoba, to zwróci ci tylko tę pierwszą
Próbowałem jeszcze tak, ale to rozwiązanie wyświetla pustą stronę xD

<script>

// Tworzymy tablicę z datami dla każdego pracownika
let robert = ["23/01/2023-28/01/2023"];
let adrian = ["29/01/2023-03/02/2023"];
let damian = ["04/02/2023-07/02/2023"];
let przemek = ["08/02/2023-10/02/2023"];
let kuba = ["11/02/2023-14/02/2023"];

// Pobieramy aktualną datę z systemu lub przeglądarki
let currentDate = new Date();

// Ustawiamy datę w formacie dzień/miesiąc/rok
let dd = currentDate.getDate();
let mm = currentDate.getMonth()+1;
let yyyy = currentDate.getFullYear();

if (dd<10)
@Xeardo: nie piszę w JSie, ale daty zapisuje się w formacie yyyy-mm-dd

Taki przykład

const duties = [
{name: 'Robert', start: '2023-01-23', end: '2023-01-28'},
{name: 'Adrian', start: '2023-01-29', end: '2023-02-03'},
{name: 'Damian', start: '2023-02-04', end: '2023-02-07'},
{name: 'Tomek', start: '2023-02-08', end: '2023-02-10'},
]
const now = new Date()

duties.forEach(person => {
if (Date.parse(person.start) <= now && now <= Date.parse(person.end)) {
console.log('Dzisiaj dyzur pelni ' + person.name)
}
})
Date.parse(date.split('-')[0]);

@Xeardo: to nie da Ci oczekiwanego rezultatu: daty. Dałoby, jakby była w innym formacie. Jeśli nie masz możliwości zmiany formatu daty przychodzącej, to zrób jak na początku, jak parsowałeś dzień, miesiąc, rok i utwórz obiekt daty: new Date(2023,0,23) to da ci "obiekt" (w cudzysłowu, bo w JS nie ma obiektów jako takich)
@draxgar: Wystrugałem takie coś i działa ;)

// Tworzymy tablicę z datami dla każdego pracownika
const duties = [
{name: 'Robert', start: '2023-01-23', end: '2023-01-28'},
{name: 'Adrian', start: '2023-01-29', end: '2023-02-03'},
{name: 'Damian', start: '2023-02-04', end: '2023-02-07'},
{name: 'Tomek', start: '2023-02-08', end: '2023-02-10'},
{name: 'Robert', start: '2023-03-23', end: '2023-03-28'},
{name: 'Adrian', start: '2023-03-29', end: '2023-03-03'},
{name: 'Damian', start: '2023-03-04', end: '2023-03-07'},
{name: 'Tomek', start: '2023-03-08', end: '2023-03-10'},
]

// Pobieramy aktualną