Πώς λειτουργεί ένας υπολογιστής τις καθημερινές για οποιαδήποτε ημερομηνία
Κάθε ημερομηνία από τότε που τέθηκε σε ισχύ το Γρηγοριανό ημερολόγιο έχει ακριβώς μια σωστή εργάσιμη ημέρα και μπορεί να υπολογιστεί μόνο με την αριθμητική — δεν απαιτείται εφαρμογή ημερολογίου ή πίνακας αναζήτησης. Η υποκείμενη ιδέα είναι η ίδια που επισημοποιήθηκε από τη συνάφεια του Zeller και τη μέθοδο του Sakamoto: μετρήστε τον συνολικό αριθμό ημερών από ένα γνωστό σημείο αναφοράς και, στη συνέχεια, χρησιμοποιήστε το modulo μέτρησης 7 για να προσγειωθείτε μια ημέρα της εβδομάδας.
Το σύγχρονο λογισμικό δεν εκτελεί κυριολεκτικά τον κλασικό τύπο Zeller - συνήθως παρακολουθεί τις μετρήσεις των ημερών χρησιμοποιώντας ένα προληπτικό Γρηγοριανό ημερολόγιο εσωτερικά - αλλά το αποτέλεσμα είναι μαθηματικά πανομοιότυπο με αυτό που υπολογίζουν αυτοί οι αλγόριθμοι με στυλό και χαρτί. Αυτή η συνέπεια είναι ακριβώς γιατί αυτή η αριθμομηχανή, ένα χάρτινο ημερολόγιο και ένα νοητικό-μαθηματικό κόλπο συμφωνούν στην ίδια απάντηση για την ίδια ημερομηνία.
Η μονοήμερη (ή διήμερη) βάρδια, χρόνο με τον χρόνο
Ένα κανονικό έτος διαρκεί 365 ημέρες — ακριβώς 52 εβδομάδες συν μία επιπλέον ημέρα. Αυτή η ημέρα που απομένει είναι ο λόγος για τον οποίο μια καθορισμένη ημερομηνία, ας πούμε η 4η Ιουλίου, προχωρά ακριβώς μια καθημερινή κάθε χρόνο: Τρίτη το ένα έτος, Τετάρτη το επόμενο, και ούτω καθεξής.
Τα δίσεκτα χρόνια σπάζουν αυτό το σταθερό μοτίβο. Επειδή η 29η Φεβρουαρίου εισάγεται εν μέρει στη διάρκεια του έτους, οποιαδήποτε ημερομηνία από την 1η Μαρτίου και μετά μεταβαίνει δύο εργάσιμες ημέρες προς τα εμπρός αντί για μία, σε σύγκριση με το προηγούμενο έτος. Οι ημερομηνίες τον Ιανουάριο και τον Φεβρουάριο δεν επηρεάζονται μέχρι να περάσει πραγματικά η δίσεκτα ημέρα.
Υπάρχει μια περαιτέρω ρυτίδα στο σημείο του αιώνα: τα έτη που διαιρούνται με το 100 δεν είναι δίσεκτα εκτός εάν διαιρούνται επίσης με το 400. Το έτος 2000 ήταν δίσεκτο σύμφωνα με αυτόν τον κανόνα. Το 1900 δεν ήταν, και το 2100 δεν θα είναι ούτε - μια λεπτομέρεια που έχει σημασία αν υπολογίζετε τις καθημερινές μέρες στο παρελθόν ή στο μέλλον.
Έλεγχος καθημερινών για ιστορικές ημερομηνίες
Επειδή η καθημερινή είναι μια σταθερή ιδιότητα της ίδιας της ημερομηνίας, αυτός ο ίδιος υπολογισμός λειτουργεί για την επαλήθευση ιστορικών αρχείων — επιβεβαιώνοντας ότι ένα τεκμηριωμένο γεγονός συνέβη την ημέρα της εβδομάδας που ισχυρίζεται μια πηγή ή προσδιορίζοντας ποια ημέρα της εβδομάδας γεννήθηκε ένας μακρινός πρόγονος.
Μια προειδοποίηση για ημερομηνίες πριν από το 1582: το ημερολόγιο που χρησιμοποιήθηκε πριν από τη Γρηγοριανή μεταρρύθμιση (το Ιουλιανό ημερολόγιο) διέθετε ελαφρώς διαφορετικούς κανόνες δίσεκτου έτους, επομένως οι υπολογισμοί των καθημερινών για τις ημερομηνίες πριν από αυτή τη μετάβαση εξαρτώνται από το ημερολόγιο που χρησιμοποιούσε η ίδια η ιστορική εγγραφή.
Πέρα από μια ενιαία ημερομηνία: μετρήσεις εμφανίσεων και καθημερινών
Μόλις μπορέσετε να υπολογίσετε μια ημέρα της εβδομάδας για μια ημερομηνία, τρεις ακόμη χρήσιμες ερωτήσεις ξεφεύγουν από τα ίδια μαθηματικά:
- Next/previous occurrence — the closest date before or after a given day that falls on a specific weekday, useful for finding "the next Friday" from any starting point.
- Μέτρηση εργάσιμων ημερών — πόσες φορές εμφανίζεται μια δεδομένη εργάσιμη ημέρα (ας πούμε, Δευτέρα) εντός ενός εύρους ημερομηνιών, που είναι τα ίδια μαθηματικά πίσω από την καταμέτρηση των περιόδων πληρωμής ή των επαναλαμβανόμενων ημερομηνιών συναντήσεων.
- Βρείτε όλες τις εμφανίσεις — μια πλήρη λίστα με κάθε ημερομηνία που μια συγκεκριμένη ημέρα της εβδομάδας εμπίπτει σε ένα εύρος, βολικό για τον προγραμματισμό οτιδήποτε επαναλαμβάνεται εβδομαδιαία.
Εάν αυτό που χρειάζεστε είναι ο ακριβής αριθμός ημερών μεταξύ δύο ημερομηνιών ή μια αντίστροφη μέτρηση που τρέχει για μια ημερομηνία-στόχο, Μετρητής ημέρας το χειρίζεται άμεσα. Για την προσθήκη ή την αφαίρεση ετών, μηνών ή εβδομάδων από μια ημερομηνία, βλ Υπολογιστής ημερομηνίας.