How to Calculate Days Between Dates and Find the Day of the Week

Calendar days calculation and weekday algorithm guide

Υπολογισμός με Ακρίβεια Ημερών & Ημέρας της Εβδομάδας

Στην πράξη — από τόκους δανείων μέχρι προθεσμίες και διαγωνισμούς — συχνά χρειάζεται να ξέρουμε:

  • Πόσες ημέρες μεσολαβούν μεταξύ δύο ημερομηνιών;
  • Ποια ημέρα της εβδομάδας αντιστοιχεί σε μια συγκεκριμένη ημερομηνία;

1) Πόσες ημέρες μεσολαβούν μεταξύ δύο ημερομηνιών

Βήμα Α — Ημέρες κάθε μήνα

ΜήναςΗμέρεςΜήναςΗμέρες
Ιανουάριος31Ιούλιος31
Φεβρουάριος28*Αύγουστος31
Μάρτιος31Σεπτέμβριος30
Απρίλιος30Οκτώβριος31
Μάιος31Νοέμβριος30
Ιούνιος30Δεκέμβριος31

*Δίσεκτο: ο Φεβρουάριος έχει 29 ημέρες.

Κανόνας δίσεκτου έτους

Ένα έτος είναι δίσεκτο αν:

  • διαιρείται με το 4,
  • εκτός αν είναι αιώνας (π.χ. 1900),
  • και οι αιώνες είναι δίσεκτοι μόνο αν διαιρούνται με 400 (π.χ. 2000).

Βήμα Β — Μετράμε σωστά τα άκρα

Συνήθως μετράμε:

  • την ημέρα εκκίνησης (inclusive)
  • όχι την ημέρα λήξης (exclusive)

Παράδειγμα

Ημέρες από 30 Δεκ. έως 1 Ιουλίου (μη δίσεκτο έτος):

  • Δεκέμβριος: 30–31 → 2 ημέρες
  • Ιανουάριος: 31
  • Φεβρουάριος: 28
  • Μάρτιος: 31
  • Απρίλιος: 30
  • Μάιος: 31
  • Ιούνιος: 30
  • 1 Ιουλ. δεν μετράται

Σύνολο: 183 ημέρες.


2) Ποια ημέρα της εβδομάδας είναι μια ημερομηνία

Ένας απλός αλγόριθμος (εντός Γρηγοριανού ημερολογίου):

Δίνουμε το έτος Y και υπολογίζουμε:

  • A = Y − 1
  • B = ⌊A/4⌋
  • C = ⌊A/100⌋
  • D = ⌊A/400⌋

Μετά:

S = Y + (σειριακή ημέρα έτους) + B − C + D

Τέλος:

S mod 7 ⇒ 0=Κυρ, 1=Δευ, …, 6=Σαβ

Παράδειγμα: 20 Ιουλίου 1969

Σειριακή ημέρα: 201

A=1968, B=492, C=19, D=4

S=2647 ⇒ 2647 mod 7 = 0 ⇒ Κυριακή.

Πράγματι, η πρώτη προσελήνωση έγινε Κυριακή.

1 σχόλιο: