Festività italiane

C'è modo di sapere (Via softwarte) le festività Italiane online ?

Ho fatto un combinatore telefonico e vorrebbero che chiama solo di notte o durante le festività.

Di sicuro, se cerchi "Festività Italiane 2021 ics" trovi da scaricare il file che normalmnete viene letto dall'applicazion "Calendar" di Apple. Gli ho dato un occhiata, è un normalissimo file di testo del quale è abbastanza facile fare il parsing per ricavare le varie date. vedi un po' tu ... :roll_eyes:

Guglielmo

Speravo qualcosa di più semplice tipo un get a un sito che torna vero o falso.
Naturalmente di un servizio preposto allo scopo.

Anche perchè quel file bisognerebbe ricordarsi tutti gli anni di cambiarlo.

Dai un'occhiata a questo sito (basato su un progetto open-source)

Worldwide Public Holidays - Nager.Date

Non c'è una API che fa quello che proponevi (potresti aprire una issue nel repository GitHub), ma il formato restituito è un classico JSON e ci vuole pochissimo a fare una funzione che prende in input la data e restituisce un bool come dici.

Come non detto c'è anche l'API che fa il check sulla data
Swagger UI (nager.at)

Sembra quello che cerco, ma io sono imbranato con la programmazione.
C'è un url che mi risponde Si/No se oggi è festa ?

Quello mi sa in ogni caso ... anche le API indicate da "cotestatnt" vogliono l'anno ... :roll_eyes:

Guglielmo

mi sembra "/api/v3/IsTodayPublicHoliday/{countryCode}"

Guglielmo

Non proprio, l'url c'è ma risponde con un codice di stato HTTP

  • 200 OK se oggi è un festivo
  • 204 No Content se oggi non è un festivo

Con quale scheda hai intenzione di fare la richiesta GET?

SAMD21 (Zero) con modem SIM800L

Sto provando gli URL
https://date.nager.at/Api/v2/IsTodayPublicHoliday/IT
https://date.nager.at/Api/v2/IsTodayPublicHoliday/(IT)

Ma ho sempre errore.

Hai errore probabilmente perché il codice si aspetta una risposta positiva ovvero un code 200.

Prova a mettere lo sketch

Il codice sul server ?
Sto provando con Chrome e mi risponde:

{"type":"rfc7231 Found","status":404,"traceId":"|6c803cc2-4aaae7ec18b248e3."}

Oppure mi risponde così:

{"type":"rfc7231 Found","status":404,"traceId":"|6c803cc2-4aaae7ec18b248e3."}

Scrivo una cosa e il forum me la cambia in un altro.

{"type":"rfc7231 Found","status":404,"traceId":"|6c803cc2-4aaae7ec18b248e3."}

Nulla, scrivo not found e il forum me lo cambia in found

Allora, partendo dall'esempio WebCLient.ino della libreria TinyGSM, quello che devi valutare è la prima riga della risposta dal server (ovvero l'ultima di questo copia/incolla dal monitor seriale che ho appena fatto)

Modem Info: SIM800 R14.18
Waiting for network... success
Network connected
Connecting to ibox.tim.it success
GPRS connected
Connecting to date.nager.at
 success
Performing HTTP GET request...
HTTP/1.1 204 No Content

204 - NON festivo
200 - Festivo

Non so cosa è successo ma ora Chrome non da più una pagina, per cui presumo serva una lettura a più basso livello.

Per ora grazie allora.

è normale!
Non c'è una pagina come risposta dal server, ma solo un codice di stato HTTP.

Il SIM800 mi da giorno e ora dalla rete, ma non mi dice che giorno della settimana è.
Mi sembra che nemmeno date.nager.at lo dica.
Come ne esco con poche risorse ?

E bo, ho trovato questa formula sul web.

Soluzione non breve come speravo ma provo.

int d = 15 ; //Day 1-31
int m = 5 ; //Month 1-12 int y = 2013 ; //Year 2013

int weekday = (d += m < 3 ? y-- : y - 2, 23*m/9 + d + 4 + y/4- y/100 + y/400)%7;