Differenza tra date e calcolo dell'età
Molte persone cercano quanti giorni ci sono tra due date e un'età affidabile in anni, mesi e giorni.
Esegui gratis nel browser
Questo strumento risponde a entrambe le domande solo con le regole del calendario civile: senza fusi orari, senza giorni lavorativi e senza arrotondamenti nascosti. Ottiene i giorni totali, una scomposizione firmata in anni, mesi e giorni e la coppia ordinata usata nel calcolo.
Solo date civili — senza orologio né fuso orario
Ogni ingresso è un giorno di calendario in formato AAAA-MM-GG. Il calcolo non consulta ore, ora legale né l'orologio del server per la differenza in sé. Così la stessa coppia di date resta stabile nello strumento gratuito del browser e nell'API. I giorni non validi come 2023-02-29 o 2024-04-31 vengono rifiutati invece di essere corretti in silenzio, così un errore di digitazione non diventa un anniversario sbagliato.
Anni, mesi e giorni con una regola coerente di fine mese
La scomposizione usa mesi di calendario con clamp all'ultimo giorno valido: aggiungere un mese a 2024-01-31 produce 2024-02-29, non un giorno inventato di marzo. Se un mese provvisorio superasse la data finale, l'algoritmo indietreggia di un mese e conta i giorni interi rimanenti. Per questo da 2024-01-31 a 2024-02-29 c'è un mese e zero giorni, e da 2024-01-31 a 2024-02-28 zero mesi e ventotto giorni. I giorni totali escludono il giorno iniziale: la stessa data dà zero.
Modalità differenza e modalità età condividono lo stesso oracolo
La modalità differenza confronta date_from con date_to e restituisce total_days, years, months, days, sign e la coppia ordinata. La modalità età usa birthdate e una reference_date esplicita per risultati deterministici; se omette il riferimento nello strumento gratuito, si usa la data civile locale del dispositivo. Numericamente l'età è la stessa funzione della differenza con altri nomi di campo, così un'età con riferimento fisso non può divergere dalla differenza di quella stessa coppia.
Risultati con segno quando l'ordine è invertito
Se la data finale precede quella iniziale, lo strumento non scambia silenziosamente gli ingressi. Conserva l'ordine inviato nei campi di eco e applica un segno negativo ai giorni totali e alla scomposizione. Questa simmetria copre compleanni futuri, intervalli invertiti e controlli automatici che devono rilevare un intervallo al contrario senza un secondo percorso di codice.
Casi d'uso
Giorni tra due tappe di progetto
Misuri i giorni di calendario esclusivi tra avvio e scadenza senza mescolare weekend, festivi o fusi orari.
Età civile per moduli ed eleggibilità
Calcoli anni, mesi e giorni rispetto a una data di riferimento fissa così revisioni ed esportazioni restano riproducibili.
Anniversari e casi limite del 29 febbraio
Gestisca compleanni al 29 febbraio e coppie di fine mese con la stessa regola di clamp dei mesi ordinari.
Controlli automatici di intervalli
Chiami l'API in un flusso e memorizzi total_days insieme alla scomposizione firmata nei registri di audit.
Domande frequenti
Il conteggio dei giorni è inclusivo o esclusivo?
Esclusivo del giorno iniziale. La stessa data produce zero giorni totali; il giorno civile successivo ne produce uno.
Come viene gestita la fine del mese?
I mesi si sommano con clamp all'ultimo giorno valido del mese di destinazione e si correggono se la data intermedia supera la data finale. I giorni interi rimanenti completano la scomposizione.
Cosa succede al 29 febbraio in un anno non bisestile?
L'anniversario dal 2024-02-29 al 2025-02-28 è un anno, zero mesi e zero giorni secondo la regola di clamp. Ingressi non validi come 2023-02-29 vengono rifiutati.
In che cosa differisce dai giorni lavorativi?
Questa capacità conta la differenza naturale di calendario e l'età civile. Giorni lavorativi e festivi appartengono a un altro strumento e non si applicano qui.
Il risultato può essere negativo?
Sì. Quando la data finale precede quella iniziale, total_days e i campi anni-mesi-giorni portano un segno negativo senza scambiare i valori inviati.
Il calcolatore è gratis su computer e cellulare?
La pagina funziona in locale e gratis nei browser desktop e mobili. L'app nativa invoca l'API e mostra la tariffa; la stessa richiesta costa $0.002 con saldo prepagato KIT.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/date-diff \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date_from":"2024-01-31","date_to":"2024-02-29"}'const res = await fetch("https://api.kit.forhosting.com/dev/date-diff", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date_from": "2024-01-31",
"date_to": "2024-02-29"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/date-diff",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date_from": "2024-01-31",
"date_to": "2024-02-29"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/date-diff", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date_from":"2024-01-31","date_to":"2024-02-29"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date_from":"2024-01-31","date_to":"2024-02-29"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/date-diff", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"date_from": "2024-01-31",
"date_to": "2024-02-29"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.date_diff",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
year_min | 1 |
year_max | 9999 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |