Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Υπολογιστών Γλώσσες

Πώς να υπολογίσετε την Ημέρα της εβδομάδας για κάθε έτος

A κοινός αλγόριθμος για τον υπολογισμό της ημέρας της εβδομάδας από μια συγκεκριμένη ημερομηνία είναι αλγόριθμος Zeller του . Ο αλγόριθμος δημοσιεύθηκε το 1882 και έχει σχεδιαστεί για να εργαστεί με το χέρι , αλλά μπορεί εύκολα να υλοποιηθεί σε λογισμικό . Αλγόριθμος έργα Zeller για την εύρεση του ημέρα της εβδομάδας ο αιώνας άρχισε , τότε κτίριο από εκεί με την προσθήκη έτη , μήνες και ημέρες . Μια καλή κατανόηση της αριθμητικής modulo είναι απαραίτητο να κατανοήσουμε πώς λειτουργεί ο αλγόριθμος , αλλά ο καθένας μπορεί να το εφαρμόσει , ακολουθώντας τις οδηγίες . Οδηγίες
Η 1

Ετοιμάστε τις εισόδους . Ο αλγόριθμος αναμένει την ημέρα , το μήνα και το έτος . Αριθμοί αλγόριθμος

Zeller είναι οι μήνες από τρεις έως 14 , αρχής γενομένης με το Μάρτιο και τελειώνει με το Φεβρουάριο . Αυτό εγγυάται ότι οι ημέρες άλμα πάντα πέφτουν στο τέλος του έτους , απλούστευση των υπολογισμών .

Αν μήνα <3 , στη συνέχεια , month = μήνα + 12 2

Υπολογίστε τον αιώνα και η χρόνια του αιώνα. Ο αιώνας για το 1950 θα πρέπει να είναι 19 , έστω και αν εμπίπτει στον εικοστό αιώνα .

Αιώνα = ορόφου (έτος /100 ) yearOfCentury = έτος mod 100 εικόνων
3

Αναζήτηση η ημέρα της εβδομάδας κατά την οποία ξεκίνησε ο αιώνα .

dayOfWeek = όροφος ( αι /4 ) + 5 * αιώνα

Zeller στο συμπέρασμα ότι αυτός ο υπολογισμός , modulo επτά , θα δώσει την ημέρα της εβδομάδα ότι κάθε δεδομένη αιώνα άρχισε . Ο υπολογισμός όροφος χειρίζεται το γεγονός ότι κάθε τέταρτο αιώνα είναι σύντομη μια μέρα άλμα .
Η 4

Υπολογίστε την ημέρα της εβδομάδας ότι η χρονιά ξεκίνησε για .

DayOfWeek = dayOfWeek + + yearOfCentury πάτωμα ( yearOfCentury /4 )

Κάθε χρόνο αρχίζει την επόμενη ημέρα της εβδομάδας σε σχέση με το προηγούμενο έτος , εκτός από τα δίσεκτα έτη . Ο υπολογισμός αυτός , modulo επτά , δίνει την ημέρα της εβδομάδας της πρώτης ημέρας του έτους .
5

Βρείτε την ημέρα της εβδομάδας ότι ο μήνας άρχισε στις .

DayOfWeek = dayOfWeek + όροφος ( ( μήνα + 1 ) * 26 ) /10 )

Αυτή είναι η καρδιά του αλγορίθμου Zeller του . Zeller παρατήρησε ότι ο υπολογισμός αυτός είναι σε θέση να προσδιορίσει σε ποια ημέρα της εβδομάδας θα ξεκινήσει ένα μήνα . Είναι εξαλείφει την ανάγκη για πίνακες αναζήτησης για να καθορίσει το μήκος του κάθε μήνα .
Η 6

Προσθέστε την ημέρα του μήνα και να υπολογίσει την ημέρα της εβδομάδας κατά την οποία η ημερομηνία συμπίπτει .

DayOfWeek = dayOfWeek + daydayOfWeek = dayOfWeek mod 7
Η 7

Μετατρέψτε την ημερομηνία στα πρότυπα ISO ημερομηνία εβδομάδα .

ISO ημερομηνία ημέρα της εβδομάδας - από - εβδομάδων αρχίσει με τη Δευτέρα = 1 . Αλγόριθμος Zeller χρησιμοποιεί Σάββατο = 0 . Η μετατροπή χρησιμοποιεί απλή αριθμητική modulo .

DayOfWeek = ( ( dayOfWeek + 5 ) mod 7 ) + 1
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα