Om du vill uttrycka en datumskillnad i kalenderår, månader och dagar räknar du först kalender­månader och sedan återstående dagar. Den här genomgången av Numbers använder syntetiska publiceringsdatum och en uttrycklig regel för månadsslut, så att du kan kontrollera resultatet.

Exempelvis blir perioden från 18 maj 2022 till 24 september 2025 3 år, 4 månader och 6 dagar med metoden nedan. Du skapar ett återanvändbart kalkylblad som även hanterar februari, skottår och datum som 31 januari.

Välj vad en kalenderskillnad innebär

För att beräkna en kalenderskillnad behövs ett startdatum och en regel för hur månaderna ska räknas. Om du dividerar förflutna dagar med 365 och sedan med 30 bevaras inte kalendergränserna: månader och år har olika längd. TC39:s dokumentation för datum-API:et förklarar uttryckligen denna skillnad när den beskriver varför datumskillnader som standard anges i dagar, om inte en större enhet begärs. Dokumentation om Temporal.PlainDate.

Den här genomgången använder följande konvention för moderna gregorianska datum:

  1. Gå framåt från det tidigare datumet till det senare.
  2. Hitta det största heltalsantalet månader vars kalenderankare inte passerar slutdatumet.
  3. Behåll startdagens nummer om den dagen finns i målmånaden; annars används månadens sista dag.
  4. Uttryck var 12:e månad som ett år och räkna sedan dagarna från ankaret till slutdatumet.

Med den här konventionen är perioden från 31 januari till 28 februari 2025 en månad. Perioden från 31 januari till 30 mars 2025 är en månad och 30 dagar: ankaret för två månader skulle vara 31 mars, vilket passerar slutdatumet. Detta är följder av den valda regeln, inte universella definitioner av en månad.

Räkna förflutna kalenderdagar i stället för att räkna med båda datumen som inkluderade dagar. Samma datum ger därför noll år, noll månader och noll dagar. Om du vill räkna hur många daterade kalenderposter ett intervall innehåller är det en annan beräkning.

Håll kalenderdatum åtskilda från tidsstämplar

Ett publiceringsdatum som 2025-09-24 är ett kalenderdatum: ett år, en månad och en dag i en kalender. Det anger ingen tidpunkt eller något klockslag. En tidsstämpel som 2025-09-24T00:30:00+02:00 innehåller en tid och en numerisk UTC-förskjutning, vilket gör att den identifierar en tidpunkt. RFC 3339 definierar motsvarande syntax för fullständiga datum och datum/tid. RFC 3339: Datum och tid på internet: Tidsstämplar.

En förskjutning som +02:00 beskriver förhållandet till UTC. En namngiven tidszon, som Europe/Paris, anger regler för konvertering mellan tidpunkter och lokala tider; den tillämpliga förskjutningen kan ändras. RFC 9557 skiljer mellan dessa begrepp och förklarar varför en förskjutning i sig inte anger reglerna som behövs för lokal kalenderaritmetik. RFC 9557: Tidsstämplar med ytterligare information.

Ange de avsedda publiceringsdatumen direkt i det här kalkylbladet. Om källan innehåller tidsstämplar bör du först bestämma vilken namngiven tidszon som definierar publiceringsdagen och konvertera båda tidsstämplarna till datum i den tidszonen. Som exempel är 2025-09-24T00:30:00+02:00 samma tidpunkt som 2025-09-23T22:30:00Z; om du väljer det visade datumet innan du väljer referenstidszon kan indata skilja sig med en dag.

Skapa kalkylbladet för datumskillnad i Numbers

Du behöver Numbers på din Mac och en tabell med kolumnerna A till och med J och minst två rader. Använd rad 1 för etiketter och rad 2 för beräkningen. Formlerna nedan använder engelska funktionsnamn och kommatecken som avgränsare.

Om du vill ange en formel markerar du målcellen, skriver eller klistrar in formeln med början på = och trycker på Retur. Apple dokumenterar att formelredigeraren öppnas när du skriver ett likhetstecken. Funktionshjälp finns i funktionsbläddraren. Beräkna värden med data i tabellceller i Numbers på Mac.

Ange entydiga start- och slutdatum

Ge A1 etiketten Start date och B1 etiketten End date. Ange följande syntetiska publiceringsdatum:

Cell Formel Avsett datum
A2 =DATE(2022,5,18) 18 maj 2022
B2 =DATE(2025,9,24) 24 september 2025

Med DATE(year,month,day) undviker du tvetydighet mellan regionala tolkningar av datumsträngar. Apple rekommenderar särskilt den här funktionen för enhetlig datumtolkning mellan regionala inställningar. Ange giltiga kalenderdatum, inklusive rätt antal dagar i varje månad. DATE.

Kontrollera att slutdatumet är samma som eller senare än startdatumet innan du fortsätter. Det här kalkylbladet beräknar avsiktligt en skillnad framåt i tiden; det definierar inte negativa kalenderperioder.

Hitta det sista kalenderankaret före slutdatumet

Ange följande etiketter och formler på rad 2, i ordning:

Cell Etikett på rad 1 Formel på rad 2
C2 Candidate months =(YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2)
D2 Complete months =C2-IF(DATE(YEAR(B2),MONTH(B2),MIN(DAY(A2),DAY(EOMONTH(B2,0))))>B2,1,0)
E2 Anchor month start =EDATE(DATE(YEAR(A2),MONTH(A2),1),D2)
F2 Anchor date =DATE(YEAR(E2),MONTH(E2),MIN(DAY(A2),DAY(EOMONTH(E2,0))))

Den första formeln beräknar avståndet mellan år-månad-positionerna. Apples funktioner YEAR och MONTH hämtar dessa komponenter från datumvärden. YEAR, MONTH.

Den andra formeln testar ett ankare i slutmånadens kalender. Dess dag är det minsta av startdagens nummer och månadens sista dag. Om detta kandidatdatum passerar slutdatumet drar formeln bort en månad. Den här villkorsstyrda justeringen använder det dokumenterade beteendet hos IF. IF.

De återstående formlerna skapar det faktiska ankaret. EDATE flyttar månadens första dag från startdatumet med det beräknade antalet månader och undviker därmed ett ogiltigt dagnummer i det här mellansteget. EDATE.

Sedan tillämpar kalkylbladet uttryckligen regeln för månadsslut: DAY hämtar dagnumret, EOMONTH ger månadens sista datum i målmånaden och MIN väljer det mindre dagnumret. På så sätt blir hanteringen av korta månader tydlig i formeln. DAY, EOMONTH, MIN.

Uttryck resultatet i år, månader och dagar

Fyll i kalkylbladet med följande formler:

Cell Etikett på rad 1 Formel på rad 2
G2 Years =QUOTIENT(D2,12)
H2 Months =MOD(D2,12)
I2 Days =DATEDIF(F2,B2,"D")
J2 Calendar difference =G2&" years, "&H2&" months, "&I2&" days"

QUOTIENT ger resultatet av heltalsdivisionen och MOD ger resten. Tillsammans omvandlar de antalet hela månader till år och återstående månader. QUOTIENT, MOD.

För exempeldatumen ska D2 vara 40 och F2 motsvara 18 september 2025. De sex dagarna mellan det ankaret och 24 september ger resultatet: 3 år, 4 månader, 6 dagar. Textformeln använder fasta etiketter i plural för enkelhets skull; de separata numeriska kolumnerna finns kvar för andra beräkningar.

Kontrollera månadsslut och skottår

Använd dessa syntetiska datumpar för att kontrollera kalkylbladets konvention. Ersätt endast formlerna i A2 och B2 och behåll de övriga formlerna:

Startdatum Slutdatum Förväntat resultat i år, månader, dagar Ankardatum
18 maj 2022 24 september 2025 3, 4, 6 18 september 2025
31 januari 2025 28 februari 2025 0, 1, 0 28 februari 2025
31 januari 2024 29 februari 2024 0, 1, 0 29 februari 2024
29 februari 2024 28 februari 2025 1, 0, 0 28 februari 2025
31 januari 2025 30 mars 2025 0, 1, 30 28 februari 2025
24 september 2025 24 september 2025 0, 0, 0 24 september 2025

Det här är beräknade exempel enligt den angivna regeln. Den underliggande ankaralgoritmen kontrollerades med en deterministisk Python-beräkning, inklusive 10 000 genererade datumpar; Numbers-gränssnittet kördes inte.

Kontrollera resultatet genom att återskapa förloppet: utgå från det ursprungliga startdatumet, flytta framåt det totala antalet månader i D2 enligt den angivna regeln för månadsslut och gå sedan framåt det antal dagar som anges i I2. Då ska du komma fram till slutdatumet. Beräkna alltid månadsankaret från det ursprungliga startdatumet: om du upprepade gånger flyttar fram en månad i taget kan du förlora den ursprungliga dagen efter februari.

Varför inte kombinera tre DATEDIF-resultat?

Apple dokumenterar alternativen DATEDIF för år, månader utan hänsyn till år samt dagar utan hänsyn till månader och år. Alternativet \"MD\" använder en särskild beräkning av dagnummer med ersatta månader. Därför ska man inte anta att det betyder de dagar som återstår efter den valda justeringen för månadsslut. Det här kalkylbladet använder endast \"D\" mellan det uttryckliga ankaret och slutdatumet. DATEDIF.

Så motsvarar operationen ett datum-API

För programvara som implementerar den här uppgiften dokumenterar TC39 en datumtyp utan tid, Temporal.PlainDate, och en kalenderanpassad differensoperation. Om du begär until med largestUnit: 'year' får du en varaktighet uttryckt i år och mindre enheter; med standardalternativen får du en dagbaserad skillnad. Dokumentationen beskriver även begränsad månadsaddition och avvisar skillnader mellan datum med olika kalendersystem, såvida de inte konverteras till en gemensam kalender. Dokumentation om Temporal.PlainDate.

Dessa API-val förstärker kalkylbladets grundläggande beslut: identifiera indata som enbart datum, välj kalender, ange den största enheten och behåll ett ankare för att tolka månaderna. Datumsträngsstandarder beskriver representationer; att välja en representation avgör inte vilken regel för månadsslut som ska användas för uppgiften.

Lös oväntade resultat innan du använder dem

Om en formel ger ett fel markerar du felindikatorn för att läsa meddelandet. Apples Numbers-guide dokumenterar det här felsökningssteget. Kontrollera cellreferenserna och använd funktionsbläddraren för att infoga argument om din installation förväntar sig andra formelavgränsare. Beräkna värden med data i tabellceller i Numbers på Mac.

Om beräkningen verkar rimlig men skiljer sig från ett annat verktygs resultat bör du jämföra dess regel för månadsslut med kalkylbladets regel. Kontrollera också om det andra verktyget räknar med båda slutdatumen, använder tidsstämplar i stället för kalenderdatum eller avrundar resultatet. Ta inte med omvända datum eller tomma indata i den här framåtriktade beräkningen i stället för att ersätta fel med noll.

För en återanvändbar jämförelse av publiceringsdatum sparar du startdatumet, slutdatumet och ankaret bredvid den slutliga formuleringen. Tillsammans gör de att ett resultat som ”3 år, 4 månader, 6 dagar” kan spåras till en specifik kalenderberäkning.

Källor