Vergangener Jahresanteil
Dieser Jahresfortschrittsrechner gibt den Anteil des UTC-Kalenderjahres zurück, der zu einem expliziten ISO-8601-Zeitpunkt vergangen ist.
Im Browser ausführen – kostenlos
Er wandelt eine Zeit mit Z oder numerischem Versatz in UTC um, misst die exakten Millisekunden seit dem 1. Januar um 00:00:00 UTC und teilt diese Dauer durch die Gesamtlänge des ermittelten UTC-Jahres. Schaltjahre haben 366 Tage, gewöhnliche Jahre 365. Weder aktuelles Datum noch lokale Zeitzone, Netzwerk, Zufall oder verborgene Standardwerte beeinflussen das Ergebnis.
Was der vergangene Jahresanteil bedeutet
Der ausgegebene Bruchteil ist ein kontinuierliches Maß für den Fortschritt innerhalb eines UTC-Kalenderjahres. Sein Zähler entspricht den Millisekunden vom 1. Januar um 00:00:00.000 UTC bis zum angegebenen Zeitpunkt; sein Nenner entspricht den Millisekunden des gesamten UTC-Jahres. Im ersten Moment des 1. Januar ist das Ergebnis exakt null. Danach steigt es im Jahresverlauf, bleibt aber bei jedem gültigen Zeitpunkt dieses Jahres kleiner als eins. Eins gehört zum ersten Moment des Folgejahres, in dem eine neue Berechnung wieder bei null beginnt. Das unterscheidet sich von einem Prozentsatz nach Kalendertag, der ganze Datumswerte zählt oder den laufenden Tag als vollständig vergangen behandelt. Mittags ist die Hälfte dieses Datums verstrichen, Sekunden tragen ihren genauen Anteil bei und bis zu drei Nachkommastellen einer Sekunde bleiben als Millisekunden erhalten. Der Nenner umfasst 365 Tage in einem gewöhnlichen und 366 Tage in einem gregorianischen Schaltjahr. Da der Versatz vor der Wahl des UTC-Jahres normalisiert wird, kann ein spät am 31. Dezember in einer anderen Zeitzone notierter Zeitpunkt korrekt zum 1. Januar des folgenden UTC-Jahres gehören.
Einen eindeutigen ISO-Zeitpunkt eingeben
Senden Sie datetime im Format YYYY-MM-DDTHH:mm:ssZ. Optional können Sie eine bis drei Nachkommastellen für Sekunden ergänzen oder Z durch einen vorzeichenbehafteten Versatz wie +05:30 oder -04:00 ersetzen. Die Zeitzonenangabe ist Pflicht, weil eine lokale Datums- und Zeitangabe keinen eindeutigen Zeitpunkt bezeichnet. Reine Datumswerte, lokale Formate, Monatsnamen, Leerzeichen statt T und Versätze ohne Doppelpunkt werden abgelehnt und nicht geraten. Der Parser prüft außerdem gregorianische Monatslängen, Schalttage, Stunden, Minuten, Sekunden und Versatzfelder. Schaltsekunden werden nicht akzeptiert: Sekunden reichen von 00 bis 59 und entsprechen damit dem verwendeten deterministischen Modell einer bürgerlichen Minute. Nach dem Parsen wird der Versatz mit ganzzahliger Arithmetik angewendet und der resultierende Zeitpunkt als utc_datetime ausgegeben. Zusätzlich enthält die Antwort utc_year, elapsed_milliseconds und year_milliseconds, sodass Sie den Bruchteil ohne erneute Kalenderberechnung prüfen können. Zwei Zeichenfolgen für denselben Zeitpunkt mit unterschiedlichen Versätzen liefern dieselbe normalisierte Zeit und denselben Bruchteil. Ein erfolgreicher automatisierter Aufruf kostet $0.002; die Berechnung ist auch lokal im Browser möglich.
Einsatz eines deterministischen Jahresverhältnisses
Nutzen Sie diese Funktion, wenn ein Modell, eine Visualisierung, ein Bericht oder ein Test eine stabile Position im Kalenderjahr benötigt und nicht vom Ausführungszeitpunkt eines Rechners abhängen darf. Dashboards können den Bruchteil in einen Prozentsatz oder Fortschrittsbalken umwandeln und zugleich den exakten Zähler und Nenner für Beschriftungen und Prüfungen aufbewahren. Datenpipelines können Zeitstempel um eine normalisierte Jahreskoordinate für Saisonanalysen, Interpolation oder zyklische Merkmale ergänzen; Eingaben mit Versatz werden dabei auf derselben UTC-Zeitachse verglichen. Tests können Grenzfälle zu Neujahr, am Schalttag oder in der letzten Millisekunde des Dezembers festschreiben, ohne eine Uhr zu simulieren. Das Ergebnis basiert auf verstrichener Dauer und eignet sich daher nicht zum Zählen abgeschlossener Kalendertage, Arbeitstage, Geschäftsjahre oder gleich langer Monate. UTC-Tage werden bewusst mit 86.400 Sekunden modelliert und Schaltsekunden nicht eingefügt, wodurch die Berechnung portabel und reproduzierbar bleibt. Für einen Prozentsatz multiplizieren Sie fraction mit hundert und runden erst bei der Anzeige. Für Geschäftsjahre verwenden Sie stattdessen die Grenzen des jeweiligen Geschäftskalenders.
Anwendungsfälle
Dashboards zum Jahresfortschritt
Wandeln Sie einen expliziten Zeitstempel in eine exakte Position zwischen null und eins im UTC-Jahr für Fortschrittsbalken und KPI-Hinweise um.
Merkmale für Saisonanalysen
Ergänzen Sie Zeitstempeldaten nach der UTC-Normalisierung ihrer expliziten Versätze um eine konsistente, kontinuierliche Jahreskoordinate.
Deterministische Grenztests
Erstellen Sie reproduzierbare Testwerte rund um Neujahr und den Schalttag, ohne die Systemuhr auszulesen oder zu simulieren.
Häufige Fragen
Kann der Bruchteil jemals eins sein?
Nicht für einen Zeitpunkt im ausgewählten UTC-Jahr. Der erste Moment des Folgejahres gehört bereits zum neuen Jahr und ergibt null.
Wie werden Schaltjahre behandelt?
Der Nenner verwendet 366 Tage, wenn das UTC-Jahr durch vier teilbar ist; Jahrhundertjahre sind ausgenommen, sofern sie nicht durch vierhundert teilbar sind. Sonst gelten 365 Tage.
Warum ist eine Zeitzone erforderlich?
Ohne Z oder numerischen Versatz bezeichnet eine lokale ISO-Datumszeit keinen eindeutigen UTC-Zeitpunkt und könnte je nach Umgebung andere Ergebnisse liefern.
Berücksichtigt die Berechnung Schaltsekunden?
Nein. Sie verwendet feste bürgerliche Tage mit 86.400 Sekunden und akzeptiert Sekunden von 00 bis 59, damit das Kalenderverhältnis portabel und deterministisch bleibt.
Was kostet ein API-Aufruf?
Eine erfolgreiche API-Berechnung kostet $0.002 je Aufruf. Dieselbe reine Berechnung steht auch im Browser bereit.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/date/fraction-of-year-elapsed \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-07-02T12:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/fraction-of-year-elapsed", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2026-07-02T12:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/fraction-of-year-elapsed",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2026-07-02T12:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/fraction-of-year-elapsed", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2026-07-02T12:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2026-07-02T12:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/fraction-of-year-elapsed", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"datetime": "2026-07-02T12:00:00Z"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.fraction_of_year_elapsed",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |