Calculating weekdays in your head

think Since this topic briefly came up during my “mini class reunion” at Christmas, I thought I’d post it here, too, how you can calculate a weekday in your head.

Note: modulo (short: mod) means the remainder of a division of two numbers (e.g. 15 modulo 7 = 1, because 15 = 2·7 + 1), which I will use here for the sake of brevity. The resulting values correspond to the days of the week, hence 7, of course.

We’ll use 20 Nov 2011 as an example. It won’t work without calculation and memorizing, though:

  1. Take the year since 1900 modulo 7. Example: 2011–1900 = 111; 111 mod 7 = 6.
    Hint: You can subtract 70 for starters (or any other multiple of 7) to make it easier; the remainder of the division won’t change because of this, of course.
  2. Due to the leap years, you then add the integer part of one quarter of the years since 19001, in our example 111:4 = 27. And take the remainder of this number too2: 27 mod 7 = 6.
    Hint: Of course it’s 100:4 = 25 for the year 2000, which you can use as an easy-to-remember basis.
    Hint: You can also calculate with -1 instead of 6, since that results in the same value in the end, thanks to modulo 7.
  3. For the month, you memorize this table (which denotes the variations in the weekday for the first days of the months):
    Jan–Mar   0     3     3  
    Apr–Jun   6     1     4  
    Jul–Sep   6     2     5  
    Oct–Dec   0     3     5  

    In the example: 3 for November.
    Hint: It’s probably easiest memorized as row 0-3-3, column 0-6-6-0 and sub-columns 1-2-3   4-5-5(!).
    (I think it would work without such a table, too, but once you got it memorized, I guess it’s easier this way.)

  4. If the date in question is in January or February of a leap year, subtract 1. (Don’t forget!)
  5. Then simply add the day, in the exaple 20. Or straight away the value modulo 7, here 6.
  6. The sum modulo 7 then results in a value from 0 to 6, with 0 for Sunday, 1 for Monday, …, 6 for Saturday.
    Our example thus results in 6+6+3+20 = 35; 35 mod 7 = 0, so 20 Nov 2011 is a Sunday.
    If you used -1 instead of 6: 6-1+3-1 = 7; 7 mod 7 = 0 or -1-1+3-1 = 0.

Quite easy, isn’t it? :mrgreen:


Photo: aidasonne – Fotolia.com

  1. which means this algorithm only applies to 1900–2099 without modifications []
  2. of course you can also just add up everything and then do the modulo 7 calculation once at the end, but that’s probably harder for most… []

23 Comments

  1. J

    Hui, das ist ja praktisch, damit kann man sogar in angetrunkenem Zustand sicher noch jede Menge Leute beeindrucken. Die wenigen Rechenschritte und die lächerliche Tabelle hat man ja in nen paar Minuten auswendig gelernt.

    • c

      Und man gibt denen, die mit ihrem Handy angeben wollen, die Gelegenheit dazu, wenn sie das berechnete Datum überprüfen wollen. :mrgreen: (War diesmal aber kein Angeber da.)

  2. M

    Ich muss nicht mit dem Handy angeben, würde aber trotzdem dort nachschauen…

  3. jL

    Hervorragend! Schon auswendig gelernt und wenn es nicht so kalt wäre, würde ich mich auf den Marktplatz stellen und mit Wochentagvoraussage meinen Lebensunterhalt verdienen!

    • c

      Zieh dir doch irgendwas Zigeunerartiges an und besorg dir ein passendes und vor allem beheiztes Zelt…

  4. I

    Super, echt klasse Sache. Eines wollte ich mir dann grad ausrechnen aber leider baut sich da gerade eine Denkblockade auf. Wie kann man denn ein Datum vor dem 1.1.1900 berechnen?

    • c

      Naja, da muss man halt einen Korrekturwert mit hinzunehmen, wenn der 1.1.1X00 kein Montag ist – das ganze steht sogar in der Wikipedia (was ich nicht wusste – aber es sollte auch niemanden überraschen, dass es drinsteht…), dort nicht ab 1900, sondern für alle Jahrhunderte, also nimmt man in meinem Schritt I und II oben nur die beiden letzten Ziffern und dazu dann:

      Jahrhundertziffer

      Die Formel für die Jahrhundertziffer ist (3 – Jahrhundert mod 4) * 2.

      Sie ist 0 für alle Jahre, die mit 19, 23, 27 anfangen
      Sie ist 2 für alle Jahre, die mit 18, 22, 26 anfangen
      Sie ist 4 für alle Jahre, die mit 17, 21, 25 anfangen
      Sie ist 6 für alle Jahre, die mit 16, 20, 24 anfangen

  5. l

    Gut, dass ich auf Deinen Blog-Eintrag hier gestoßen bin, noch bevor ich die entsprechenden Wikipedia-Seiten entdeckt habe. Ist super erklärt, und mit der kleinen Tabelle inklusive Eselsbrücke hat man die Monatsziffern sofort auswendig gelernt. Praktischerweise kann man sich ja übrigens einfach die Ziffer fürs laufende Jahr merken, dann geht das Berechnen der meisten Wochentage, die man im Alltag so braucht, in Nullkommanichtsmodulosieben. Vielen Dank!

    • c

      Freut mich zu hören. :)

    • H

      Die Jahrhundertbestimmung wird bei mir richtig berechnet.
      Die Jahrhunderte erfolgen im Zyklus von alle 400 Jahre.
      Das heißt: Jahrhundert 0 (ist ein Schaltjahrhundert +1wegen dieser Sonderregelung das wir im Jahr 2000 ja hatten und wiederholt sich wieder im Jahr 2400) bis Jahrhundert 3 dann wieder 0 bzw. 4. Jahrhundert da sich der Kreis wieder mit + 1 schließt.
      Berechnet wird es so:
      Jahr 0-99 = 5 (100/4=25×5(1/4 Jahrhundert sind Schaltjahre) =125-1(wegen der 99) =124 mit gleich Rest 5
      Jedes Jahrhundert hat vorläufig die Kennzahl 5
      Das heißt:
      Jahrhundert 0 = 5 (5) (5+5+5+5+1) Schaltjahrhundert Kennziffer + 1
      Jahrhundert 1 = 3 (5+5)
      Jahrhundert 2 = 1 (5+5+5)
      Jahrhundert 3 = 6 (5+5+5+5)
      Also die Jahrhunderte haben folgende Kennziffern
      1700 Jh. Kennziffer 3
      1800 Jh. Kennziffer 1
      1900 Jh. Kennziffer 6
      2000 Jh. Kennziffer 5

      Gruß Herby

  6. D

    20.11.2011 = Wochentag ? Zusammenfassend Ihr System Schritt für Schritt
    ————————————————————————–
    20 = : 7 = 2 x 7 = 14 + 6 = Behalte 6
    11 = Zahl 3 gemäss Liste für Nov. = Behalte 3
    2011 = 1900 + 111 = 111:7 = 15 Rest 6 = Behalte 6
    21. Jhdt = 6 = Behalte 6
    Total 21 = 3 x 7 ohne Rest = Sonntag.

    Ja,ja, gut, Ihr System geht ab in meine Richtung, ist aber immer noch zu kompliziert fürs Kopf-schnell-rechnen! Mit den Schaltjahrmonaten sind es 5 Komponenten, die rasch überschlagsmässig berechnet sein wollen > Sie brauchen also mind. 10 Sek. > ich 1-2, weil ich alle Jahre & Jahrhunderte bis zum 1.1.0001 im Kopf intus habe, das ist der Unterschied! Ihr System ist theoretisch auf der Zielgerade, aber nichts fürs Kopf-schnell-rechnen !
    Schon gar nicht gegen den Komputer ! Nichts für unguet, Ihr
    adoerflinger@gmx.ch SoN, 25.3.12 17.00 h

    • c

      Klar, je mehr man sich merkt, umso weniger muss man rechnen – das mag jeder selber entscheiden, was er bevorzugt; wenn man’s nicht so oft braucht, wird man m.E. weniger aufs Merken setzen.

  7. rr

    Hallo zusammen,

    ich verstehe einfach nicht wie man die Jahrhundertziffer berechnet !!

    Laut Wikipedia: Die Formel für die Jahrhundertziffer ist (3 − (Jahrhundert mod 4)) x 2.

    Wiseo sind die Jahrhundertziffer für Jahre 16, 20, 24 die Zahl 6 ?

    Ich rechne sooo: z.B. Jahrhundert 16,,,, Also 16 Modulo 4 ist 0 !!! Wie kommt man auf die Zahl 6?

    Noch ein Beispiel: Jahrhundert 17,,, Also 17 Modulo 4 ist 1 wie kann man 3-1 machen und dann x2, damit man auf 4 kommt?

    Könnt ihr mir bitte erklären wie das geht? ich drehe durch.

    Vielen Dank

    • c

      Jahrhundert 17,,, Also 17 Modulo 4 ist 1 wie kann man 3-1 machen und dann x2, damit man auf 4 kommt?

      Naja, du hast’s ja eigentlich schon. Einfach den Klammern in der Formel von innen nach außen folgen:
      Jahrhundert mod 4 ist hier 1
      das ziehst du von 3 ab => 3 – 1 = 2
      und das mit 2 multiplizieren => 2 x 2 = 4

      Genauso bei der 16, da steht dann halt (3-0)x2 = 3×2 = 6

  8. rr

    jetzt verstanden, herzlichen dank…

  9. rr

    Oh noch ne frage, wenn es nicht stört…

    Und wie berechnet man das jahr 876 v.c. ?

    z. B. 01.01.876 ?

    Danke

    • c

      Da hab ich für die Jahres- bzw. Jahrhundertzahlen leider keine Formel parat. Zu beachten ist generell auch die unterschiedliche Schaltjahrregelung vor dem Gregorianischen Kalender (vor dem 15.10.1582).

  10. rr

    Nein sorry, nach christus meine ich.

  11. rr

    Ok, danke schön..

  12. H

    Die Jahrhuntertbestimmung funktioniert bei mir rein Rechnerrisch.
    Es setzt sich folgendermaßen zusammen:
    Jahr 0-99 = 5 (100/4=25×5(1/4Jahrhuntert sind Schaltjahre) =125-1(wegen der 99) =124 mit gleich Rest 5
    Also jedes Jahrhuntert hat vorläufig die Kennzahl 5

    Das heißt:
    Jahrhuntert 0 = 5 (5) (5+5+5+5+1) Schaltjahrhuntert = Kennziffer + 1
    Jahrhuntert 1 = 3 (5+5)
    Jahrhuntert 2 = 1 (5+5+5)
    Jahrhuntert 3 = 6 (5+5+5+5)

    Also die Jahrhunterte haben folgende Kennziffer
    1700 Jh. Kennziffer 3
    1800 Jh. Kennziffer 1
    1900 Jh. Kennziffer 6
    2000 Jh. Kennziffer 5

  13. SH

    Hallo, bitte mal meine Berechnungstheorie ansehen, die kürzlich veröffentlicht habe.
    Wochentage.wordpress.com
    Gruß Herby

    • c

      Kommt mir auf den ersten Blick etwas kompliziert vor… werd’s mir bei Gelegenheit noch genauer anschauen.

  14. B

    Sehr kurz und bündig und einfach zu verstehen. Meine Monate sind -1 und meine Jahrhunderte +1 in den Codes, aber das ist ja nur personal preference. Memory Palace für die Jahrescodes, denn die Formeln waren alle irgendwie viel zu langsam und 100 Zahlen auf 7 Routen abgelegt war jetzt nicht so schlimm.

    Bin derzeit bei kurz unter 4 Sekunden pro Datum. Der Weltrekord ist seit letztem Jahr mehr als 120 in der Minute, also zwei pro Sekunde im Schnitt für Daten zwischen Jan 1, 1600 und Dec 31, 2099. Das ist/wäre noch ein weiter Weg dahin.

    Ich habe vor kurzem auch eine iPhone App geschrieben, die genau das versucht beizubringen. Nach jedem errechneten Wochentag kann man die Codes prüfen, um zu sehen ob man den Algorithmus schon kann. Zusätzlich noch drei Timer Modi mit Game Center Leaderboard um Highscores zu vergleichen. Vielleicht kannst Du mir ja mal Feedback dazu geben…

    App Store: https://appsto.re/us/hI1cjb.i
    Facebook: http://fb.me/HumanCal

    lg,
    Bjoern

Leave a Reply to ring ring

All inputs are optional. The e-mail address won't be published nor shared.

  • Moderation: Comments from first-time commentators must be approved manually before they appear.
  • Behave yourself! No insults, no illegal content, etc.! Should go without saying, don't you agree...?
  • Website: I don't mind blogs with ads, but purely commercial links are not welcome and will be deleted. Just like pure spam comments.
  • Allowed HTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <sub> <sup> <big> <small> <u>