Wie viele Tage hat der Monat Mai? Wie berechnet man die Anzahl der darin enthaltenen Tage mithilfe einer mathematischen Formel basierend auf der Monatszahl? Was werden wir verwenden

Der kostenlose Online-Rechner Kontur.Accounting hilft Ihnen dabei und sagt Ihnen, wie viele Tage zwischen zwei angegebenen Terminen vergangen sind. Darüber hinaus können Sie bei Bedarf zählen, wie viele Kalender-, Wochenenden oder Arbeitstage (Stunden) ein bestimmter Zeitraum eines Jahres oder mehrerer Jahre umfasst.

Wie viele Tage liegen zwischen den Daten? Anweisungen

Sie legen einfach einen bestimmten Start- und Endtag fest und erhalten im Bruchteil einer Sekunde ein Angebot. Der Online-Rechner berechnet alle Daten selbstständig. Wenn Sie die ursprünglichen Wochentage ändern, wird das Ergebnis automatisch neu berechnet, um Schaltjahre zu berücksichtigen.

Wichtig: Sie können die monatlichen Arbeitstage/-stunden nicht aus den Berechnungen des letzten Jahres übernehmen und diese als Berechnungen bereitstellen – die Daten werden variieren. Daher ist es besser, einen Taschenrechner zu verwenden.

Das Verfahren ist also:

  1. Wählen Sie in den Feldern „Startdatum“ und „Enddatum“ den Start- bzw. Endtag des Countdowns aus, beginnend im Jahr 2013 und endend in der Zukunft im Jahr 2018.
  2. Legen Sie im nächsten Feld die Anzahl der Arbeitsstunden pro Tag fest. Standardmäßig ist dieses Feld bereits auf 8 Stunden (40-Stunden-Woche) eingestellt, Sie können diese Zahl jedoch ändern.
  3. Auf der rechten Seite des Bildschirms sehen Sie im Banner das Ergebnis: Arbeitstage, Kalendertage und Arbeitsstunden zwischen den angegebenen Daten. Die Ergebnisse müssen kopiert und in Ihrem Dokument gespeichert werden.

Wofür kann man einen Taschenrechner verwenden?

  1. Berechnung von Strafen und Verzögerungen im Rahmen von Verträgen
  2. Wie man die Effizienz der Nutzung einer Ressource und die Fristen für die Nutzung versteht
  3. So vermeiden Sie, dass Sie versehentlich Aufgaben an einem Wochenende planen
  4. Wie viel Zeit bleibt bis zum Ablauf der Frist?

Beispiel:

Sie sind Buchhalter. Der Manager hat Sie gebeten, in den nächsten Minuten Angaben zur Anzahl der Arbeitsstunden zu machen, die alle Mitarbeiter des Unternehmens im Februar leisten müssen. Die Anzahl der Mitarbeiter können Sie ganz einfach ermitteln – Sie haben die Zahlen vor Augen. Aber die Anzahl der Stunden muss gezählt werden... Wie viele Tage hat der Februar? Ist es ein Schaltjahr? Welche Tage waren Wochenenden? Wie ermittelt man die Anzahl der Urlaubstage?

Lösung: Nutzen Sie einfach unser Widget. Sie erhalten alle Informationen automatisch; Sie benötigen keine Desktop-Kalender und Taschenrechner.

Hat Ihnen dieser Rechner gefallen? Dann probieren Sie unsere anderen Optionen aus

Möchten Sie Ihre Buchhaltung erledigen, Berichte versenden und Berechnungen in einem bequemen und einfachen Webdienst durchführen? Testen Sie Kontur.Accounting 14 Tage lang kostenlos! Wir zeigen Ihnen schnell, wie Sie den Service nutzen und beantworten alle Ihre Fragen!

Notiz: Dieser Beitrag ist eine Übersetzung des Artikels cmcenroe.me/2014/12/05/days-in-month-formula.html ( Teil I), sowie der Zusatz des Autors dazu ( Teil II). Der Stoff sollte nicht ernst genommen werden, sondern eher als Denkübung, die kaum mehr als schulische Rechenkenntnisse erfordert und keine praktische Anwendung hat. Viel Spaß beim Lesen!

Teil I

Einführung

Kürzlich, nach einer weiteren schlaflosen Nacht, dachte ich über Methoden nach, wie ich mir die Anzahl der Tage in jedem Monat des Jahres merken könnte. Dafür gibt es einen Abzählreim und auch eine Möglichkeit, auf die Fingerknöchel zu zählen, aber weder das eine noch das andere passte zu mir. Ich fragte mich, ob es vielleicht eine mathematische Formel zur Lösung eines solchen Problems gäbe, und da ich bei einer oberflächlichen Recherche keine fand, forderte ich mich selbst heraus, sie zu entwickeln.

Formalisierung Mit anderen Worten: Es ist notwendig, die Funktion zu finden F, so dass der Wert f(x) für jeden Monat X, dargestellt durch eine Zahl von 1 bis 12, entspricht der Anzahl der Tage in diesem Monat. Tabelle der Argument- und Funktionswerte:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Wenn Sie versucht waren, es selbst auszuprobieren, bevor Sie meine Lösung gelesen haben, ist jetzt der richtige Zeitpunkt dafür. Wenn Sie lieber sofort die fertige Antwort sehen möchten, schauen Sie unter den Spoiler.

Antwort


Nachfolgend sind meine Schritte aufgeführt, um eine Lösung zu finden.

Mathematischer Apparat

Lassen Sie uns zunächst kurz unsere Erinnerung an zwei Operatoren auffrischen, die für die Lösung dieses Problems von entscheidender Bedeutung sind: Ganzzahldivision und Restdivision.

Ganzzahlige Division Dies ist ein Operator, der in vielen Programmiersprachen verwendet wird, um zwei ganze Zahlen zu dividieren und den Bruchteil aus dem Quotienten zu entfernen. Ich werde es so darstellen. Zum Beispiel:

Rest der Division Dies ist ein Operator, der den Rest einer Division ermittelt. Viele Programmiersprachen verwenden das Symbol % , verwende ich Konstruktionen wie zum Beispiel:

Beachten Sie, dass der Rest der Division die gleiche Priorität wie die Division hat.

Grundlagen

Lassen Sie uns also unseren mathematischen Apparat verwenden, um die Grundformel zu erhalten. Ein normaler Monat hat 30 oder 31 Tage, wir können also zwischen 1 und 0 wechseln und dieser Zahl dann einfach eine Konstante hinzufügen:

Wir erhalten eine Tabelle mit den korrekten Werten, die fett hervorgehoben sind:
X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 30 31 30 31 30

Kein schlechter Anfang! Für den Januar und für die Monate März bis einschließlich Juli liegen bereits korrekte Werte vor. Der Februar ist ein Sonderfall, und wir werden uns etwas später damit befassen. Nach Juli sollte die Reihenfolge des Erhalts von 0 und 1 für die verbleibenden Monate umgekehrt werden.
Dazu können wir 1 zur Dividende addieren:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 30 31 30 31 30 31 30 31 30 31 30 31

Die Werte für August bis Dezember sind mittlerweile korrekt, die Werte für die anderen Monate sind jedoch erwartungsgemäß falsch. Mal sehen, wie wir diese Formeln kombinieren können.

Maskenüberlagerung

Dies erfordert eine stückweise Funktion, aber da ich sie langweilig fand, habe ich über eine andere Lösung nachgedacht und einen Teil der Funktion in einem Intervall verwendet, den anderen in einem anderen.
Ich glaube, dass der einfachste Weg darin besteht, einen Ausdruck zu finden, der in einem Anwendungsbereich gleich 1 und im Rest gleich 0 ist. Die Methode, bei der wir durch Multiplikation eines Arguments mit einem Ausdruck es außerhalb seines Gültigkeitsbereichs aus der Formel ausschließen, habe ich „Maskenauferlegung“ genannt, da dieses Verhalten einer Art Bitmaske ähnelt.
Um diese Methode zu verwenden, müssen wir im letzten Teil unserer Funktion einen Ausdruck finden, der gleich 1 ist, und – da die Argumentwerte immer kleiner als 16 sind – funktioniert die ganzzahlige Division durch 8 hierfür gut.
X 1 2 3 4 5 6 7 8 9 10 11 12
X ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Wenn wir nun diese Maske verwenden und einen Ausdruck anstelle von 1 im Dividenden verwenden, können wir die Reihenfolge, in der wir 0 und 1 in der Formel erhalten, umkehren:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 31 30 31 30 31

Heureka! Bis auf Februar stimmt alles. Überraschung Überraschung.

Februar

Jeder Monat hat 30 oder 31 Tage, außer der Februar hat 28 (Schaltjahre gehen über den Rahmen dieser Aufgabe hinaus). Derzeit sind es nach unserer Formel 30 Tage, daher wäre es schön, den Ausdruck gleich 2 bei zu subtrahieren.
Das Beste, was mir einfällt, ist Folgendes, das die Maske auf alle Monate nach Februar anwendet:
X 1 2 3 4 5 6 7 8 9 10 11 12
2 mod X 0 0 2 2 2 2 2 2 2 2 2 2

Wenn wir die Basiskonstante auf 28 ändern und 2 zu den verbleibenden Monaten addieren, erhalten wir die Formel:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 29 28 31 30 31 30 31 31 30 31 30 31

Leider ist der Januar nun 2 Tage kürzer. Aber glücklicherweise ist es sehr einfach, einen Ausdruck zu finden, der nur für den ersten Monat gilt: Er ist der Kehrwert der abgerundeten Zahl. Wenn wir es mit 2 multiplizieren, erhalten wir die endgültige Formel:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Nachwort

Hier ist sie – eine Formel, mit der Sie mithilfe einfacher Arithmetik die Anzahl der Tage in einem beliebigen Monat des Jahres ermitteln können. Wenn Sie sich das nächste Mal fragen, wie viele Tage der September hat, verwenden Sie einfach diese einzeilige JavaScript-Funktion:

Funktion f(x) ( return 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )

Teil II

Einführung

Im ersten Teil wurde eine kurze und sogar leicht elegante Formel erhalten, deren Hauptvorteile die Einfachheit des mathematischen Apparats, das Fehlen von Zweigen und bedingten Ausdrücken sowie die Prägnanz sind. Zu den Nachteilen gehört – neben der Tatsache, dass Sie es in Ihrem Projekt nicht verwenden werden – die fehlende Prüfung auf Schaltjahre und Nicht-Schaltjahre.
Also habe ich es mir zur Aufgabe gemacht, eine Funktion zu erstellen F, so dass der Wert f(x, y) für jeden Monat X, dargestellt durch eine Zahl von 1 bis 12 und das Jahr j, größer als 0, entspricht der Anzahl der Tage in einem Monat X pro Jahr j.
Für die Ungeduldigen gibt es unter dem Spoiler eine fertige Antwort, aber im Übrigen bitte ich Sie, mir zu folgen.

Antwort

Rest der Division: Mod Und ⌊⌋

Der visuellen Klarheit halber vereinbaren wir, dass in einigen Formeln der Divisionsoperator mit Rest durch untere Klammern ersetzt wird, wo es mir notwendig erschien:

Schaltjahr

Während eines Schaltjahres wird ein zusätzlicher Kalendertag eingeführt: der 29. Februar. Wie Sie wissen, ist ein Schaltjahr ein Jahr, das durch 4 teilbar und nicht durch 100 oder durch 400 teilbar ist. Schreiben wir den Ausdruck, der mit dieser Aussage identisch ist:

Um diesen Ausdruck in einen algebraischen umzuwandeln, ist es notwendig, eine Injektion der Form auf das Ergebnis des Ausdrucks anzuwenden:

Dadurch erhalten Sie 1 bei der Division ohne Rest und 0 bei der Division mit Rest, um sie in der Formel zur Bestimmung der Anzahl der Tage in einem Monat zu verwenden.

Als eine Funktion G" Sie können 1 minus den Rest der Division verwenden für:

X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) Unendlichkeit 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Es ist leicht zu erkennen, dass wir durch Erhöhen von Dividende und Divisor um 1 die richtige Formel erhalten für:
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Daher schreiben wir den Ausdruck als:


Und schreiben wir den Ausdruck so:

Mit diesem Ansatz erhalten wir die folgende Funktion g(y), dessen Wert 1 ist, wenn das Jahr ein Schaltjahr ist, andernfalls 0:

j 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g(y) 0 0 1 0 0 0 1 0 0 0 1
j 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g(y) 1 0 0 0 1 0 0 0 1 0 0

Schaltjahre sind fett dargestellt.

Ich möchte Sie daran erinnern, dass im Rahmen der getroffenen Vereinbarung der Betreiber für die Erlangung des Restbetrags der Teilung wie folgt dargestellt werden kann: Mod, so und ⌊⌋.

Maskenüberlagerung

In der Formel handelt es sich bei dem Teil um eine Änderung, die den Januar um 2 Tage verlängert. Wenn wir den Faktor 2 entfernen und die 1 durch 2 im Zähler ersetzen, addiert diese Formel 2 Tage zum Januar und 1 Tag zum Februar, was uns den Schlüssel zum Addieren eines Tages in einem Schaltjahr gibt. Der Übersichtlichkeit halber verwenden wir in der Formel einen Zwischenwert g(y) und wie j Wir verwenden 2000 (Schaltjahre) und 2001 (Nicht-Schaltjahre):

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Die Werte für alle Monate außer Januar der Nicht-Schaltjahre sind korrekt.

Um dieses ärgerliche Missverständnis zu korrigieren, addieren wir zum Januar einen Tag hinzu, indem wir die uns bereits bekannte Formel verwenden:


Oder:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Abschluss

Als Ergebnis wurde eine viel umständlichere, aber universellere Formel erhalten, mit der sich auch die Anzahl der Tage in einem Monat eines bestimmten Jahres ermitteln lässt:

Funktion f(x, y) ( return 28 + ((x + Math.floor(x / 8)) % 2) + 2 % x + Math.floor((1 + (1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1)) + (1 - (y % 400 + 2) % (y % 400 + 1))) / x) + Math.floor(1/x) - Math.floor(((1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1 )) + (1 - (y % 400 + 2) % (y % 400 + 1)))/x )
Beispiel in C# ideone.com/fANutzen.

1 . Ich weiß nicht, wie man solche Mnemoniken benutzt, also habe ich mir das Schild im Internet angesehen.
2 . „Die Grundlagen“ oder „Regel mit vielen Ausnahmen“, wie die meisten Regeln.
3 . Ursprünglich war der Februar im römischen Kalender der letzte Monat des Jahres, daher ist es sinnvoll, dass er kürzer ist als alle anderen. Es ist auch logisch, einen Tag am Ende des Jahres hinzuzufügen oder zu entfernen, sodass seine Länge variabel ist.

Aktualisiert. 1:
Alternative Übersetzung des ersten Teils in

Nachdem ich vor kurzem eine lange Zeit ohne Schlaf verbracht hatte, dachte ich darüber nach, wie man die Anzahl der Tage in einem Monat herausfinden kann, indem man seine Anzahl kennt. Es gibt Kinderreime zu diesem Thema, es gibt eine Möglichkeit, nach Kacheln zu zählen, aber diese Methoden passen nicht zu mir – ich habe mich auf die Suche nach einer mathematischen Formel gestürzt, die ich nach einiger Zeit abgeleitet habe.

Also die Aufgabe

Formal Mit anderen Worten müssen wir eine Funktion f(x) erhalten, die die folgende Liste von Werten liefert (die ich übrigens irgendwo im Internet gefunden und nicht mithilfe mnemonischer Regeln abgeleitet habe):

Dabei ist zu bedenken, dass wir als Argument lediglich die Monatszahl erhalten, d.h. Wir berücksichtigen keine Schaltjahre und f(2) = 28.

Wenn Sie wissen möchten, welches Ergebnis ich erhalten habe, scrollen Sie zum Ende dieser Seite. Im Folgenden wird die Herleitung der gewünschten Formel beschrieben.

Was werden wir verwenden

Zusätzlich zur Addition, Subtraktion und Multiplikation verwende ich zwei Operationen: die Ganzzahldivision und die Restoperation. Ich möchte Sie daran erinnern, was es ist:

  • Ganzzahlige Division oder „Division mit Abrundung“. Für mich wird es als regelmäßige Unterteilung dargestellt: a / b – was ⌊a / b⌋ bedeutet. Zum Beispiel 5 / 3 = 1.
  • Den Rest modulo nehmen. Traditionell bezeichne ich die Division mit einem Rest: a % b = a - (a / b) * b. Zum Beispiel 5 % 3 = 2.

Sie haben die gleiche Priorität und bleiben assoziativ.

Die Grundlagen oder die Regel mit vielen Ausnahmen

Versuchen wir, ein Muster zu finden, das möglichst viele Argumentwerte erfüllt. Normalerweise schwankt die Anzahl der Tage in einem Monat zwischen 30 und 31. Gleichzeitig können Sie die Abhängigkeit dieser Zahl von der Parität des Monats erkennen – was bedeutet, dass wir die Operation verwenden, den Rest modulo 2 zu bilden Scheint, dass dies etwa so aussehen sollte:

f₁(x) = 30 + x%2


Kein schlechter Anfang! Abgesehen vom Februar, für den wir natürlich einige Tricks anwenden müssen, werden wir froh sein, dass wir die Funktion auf das erste Halbjahr anpassen konnten. Und dann muss ab August die Parität ins Gegenteil geändert werden. Dies kann durch Ersetzen erfolgen x%2 in der ersten Version der Formel für (x+1)%2:

f₂(x) = 30 + (x + 1) % 2


Wie erwartet liegt nun schon das erste Halbjahr außerhalb des korrekten Wertebereichs, aber die Monate August bis Dezember gaben das Nötige. Lassen Sie uns einen Weg finden, diese beiden Teile zu kombinieren.

Maske

Wir benötigen, dass die +1 im Dividenden nur dann „aktiviert“ wird, wenn das Argument Werte größer als 8 erreicht, d. h. Wir müssen eine Maske auftragen. In diesem Fall dürfen die Werte des Arguments 12 nicht überschreiten. Das bedeutet, dass eine ganzzahlige Division des Arguments durch 8 für uns ideal ist:


Genau das, was wir brauchen. Verwenden wir diese Ausgabe:

f₃(x) = 30 + (x + x / 8) % 2


Juhu! Bis auf Februar stimmt alles. Wie unerwartet.

Februar

Alle Monate haben 30 oder 31 Tage, der Februar jedoch 28 (ich möchte Sie daran erinnern, dass wir keine Schaltjahre berücksichtigen).

Historische Referenz: Im romanischen Kalender war der Februar der letzte Monat des Jahres – stimmen Sie zu, dass das Hinzufügen eines Tages in Schaltjahren am Ende des Kalenders intuitiver ist. Wir verwenden jedoch den gregorianischen Kalender, bei dem der kürzeste Monat durch den Willen eines der weisen Herrscher näher an den Anfang verschoben wurde.

In der neuesten Version unserer Formel hatte der Februar ganze 30 Tage. Deshalb müssen wir ein paar Tage von ihm abschneiden. Natürlich werden einige andere Monate darunter leiden: entweder links vom Februar oder rechts davon in unserer Liste – rechts davon gibt es jedoch viel weniger Monate, sodass wir den Januar opfern und dann die Formel anpassen müssen auch dafür. Mit dem Ausdruck können Sie Tage für den ersten und zweiten Monat abschneiden 2%x.

Um einige Probleme beim Erstellen einer Tabelle zu lösen, müssen Sie die Anzahl der Tage in einem Monat in einer separaten Zelle oder in einer Formel angeben, damit das Programm die erforderlichen Berechnungen durchführen kann. Excel verfügt über Tools zur Durchführung dieses Vorgangs. Schauen wir uns verschiedene Möglichkeiten zur Verwendung dieser Funktion an.

Sie können die Anzahl der Tage in einem Monat in Excel mithilfe spezieller Kategorieoperatoren berechnen "Datum (und Uhrzeit". Um herauszufinden, welche Option am besten geeignet ist, müssen Sie zunächst die Ziele der Operation festlegen. Abhängig davon kann das Berechnungsergebnis in einem separaten Element auf dem Blatt angezeigt oder in einer anderen Formel verwendet werden.

Methode 1: Kombination der Operatoren DAY und MONTH

Der einfachste Weg, dieses Problem zu lösen, ist eine Kombination von Operatoren DER TAG Und EON-MONAT.

Funktion DER TAG gehört zur Betreibergruppe "Datum (und Uhrzeit". Es zeigt auf eine bestimmte Zahl von 1 Vor 31 . In unserem Fall besteht die Aufgabe dieses Operators darin, den letzten Tag des Monats anzugeben, indem er die eingebaute Funktion als Argument verwendet EON-MONAT.

Operatorsyntax DER TAG nächste:

TAG(Datum_in_numerischem_Format)

Das heißt, das einzige Argument dieser Funktion ist „Datum im numerischen Format“. Sie wird vom Betreiber festgelegt EON-MONAT. Es muss gesagt werden, dass das Datum im numerischen Format vom üblichen Format abweicht. Zum Beispiel Datum 04.05.2017 in numerischer Form wird es so aussehen 42859 . Daher verwendet Excel dieses Format nur für interne Vorgänge. Es wird selten zur Anzeige in Zellen verwendet

Operator EON-MONAT soll die fortlaufende Nummer des letzten Tages des Monats angeben, der eine bestimmte Anzahl von Monaten vor oder zurück ab dem angegebenen Datum darstellt. Die Syntax der Funktion lautet:

EON-MONTH(start_date;number_of_months)

Operator "Startdatum" enthält das Datum, ab dem gezählt wird, oder einen Link zu der Zelle, in der es sich befindet.

Operator "Anzahl der Monate" gibt die Anzahl der Monate an, die ab einem bestimmten Datum gezählt werden sollen.

Sehen wir uns nun anhand eines konkreten Beispiels an, wie das funktioniert. Nehmen wir dazu eine Excel-Tabelle, in deren Zelle ein bestimmtes Kalenderdatum eingetragen ist. Mithilfe der oben genannten Operatoren muss ermittelt werden, auf wie viele Tage sich der Monatszeitraum bezieht, auf den sich diese Zahl bezieht.


Unsere allgemeine Formel hatte die folgende Form:

TAG(MONAT(B3,0))

In dieser Formel ist der einzige Variablenwert die Zelladresse ( B3). Wenn Sie den Vorgang also nicht über durchführen möchten Funktionsassistenten, können Sie diese Formel in jedes beliebige Element des Blattes einfügen, indem Sie einfach die Adresse der Zelle, die die Zahl enthält, durch die Adresse ersetzen, die in Ihrem speziellen Fall relevant ist. Das Ergebnis wird ähnlich sein.

Methode 2: Anzahl der Tage automatisch ermitteln

Schauen wir uns nun ein anderes Problem an. Es ist erforderlich, dass die Anzahl der Tage nicht nach einem bestimmten Kalenderdatum, sondern nach dem aktuellen angezeigt wird. Darüber hinaus würde der Periodenwechsel automatisch und ohne Benutzereingriff erfolgen. Obwohl es seltsam erscheint, ist diese Aufgabe einfacher als die vorherige. Um es zu lösen, öffnen Sie es sogar Funktionsassistent ist nicht erforderlich, da die Formel, die diese Operation ausführt, keine Variablenwerte oder Zellbezüge enthält. Sie können einfach die folgende Formel ohne Änderungen in die Tabellenzelle eingeben, in der das Ergebnis angezeigt werden soll:

TAG(MONAT(HEUTE(),0))

Die integrierte TODAY-Funktion, die wir in diesem Fall verwendet haben, zeigt das heutige Datum an und hat keine Argumente. Somit zeigt Ihr Handy ständig die Anzahl der Tage des aktuellen Monats an.

Methode 3: Berechnen Sie die Anzahl der Tage, die in komplexen Formeln verwendet werden sollen

In den obigen Beispielen haben wir gezeigt, wie man die Anzahl der Tage in einem Monat basierend auf einem bestimmten Kalenderdatum oder automatisch basierend auf dem aktuellen Monat berechnet und das Ergebnis in einer separaten Zelle anzeigt. Es kann aber auch erforderlich sein, diesen Wert zu ermitteln, um andere Indikatoren zu berechnen. In diesem Fall erfolgt die Berechnung der Anzahl der Tage innerhalb einer komplexen Formel und wird nicht in einer separaten Zelle angezeigt. Sehen wir uns anhand eines Beispiels an, wie das geht.

Wir müssen sicherstellen, dass in der Zelle die Anzahl der verbleibenden Tage bis zum Ende des aktuellen Monats angezeigt wird. Wie bei der vorherigen Methode muss diese Option nicht geöffnet werden Funktionsassistenten. Sie können einfach den folgenden Ausdruck in die Zelle eingeben:

TAG(MONAT(HEUTE(),0))-TAG(HEUTE())

Danach wird in der angegebenen Zelle die Anzahl der Tage bis zum Monatsende angezeigt. Jeden Tag wird das Ergebnis automatisch aktualisiert und ab Beginn des neuen Zeitraums beginnt der Countdown von neuem. Es stellt sich heraus, dass es sich um eine Art Countdown-Timer handelt.

Wie Sie sehen, besteht diese Formel aus zwei Teilen. Der erste davon ist ein bereits bekannter Ausdruck zur Berechnung der Anzahl der Tage in einem Monat:

TAG(MONAT(HEUTE(),0))

Aber im zweiten Teil wird die heutige Zahl von diesem Indikator abgezogen:

TAG FÜR TAG())

Bei dieser Berechnung ist die Formel zur Berechnung der Anzahl der Tage daher Teil einer komplexeren Formel.

Methode 4: Alternative Formel

Aber leider verfügen Versionen des Programms vor Excel 2007 nicht über den Operator EON-MONAT. Was ist mit den Benutzern, die ältere Versionen der Anwendung verwenden? Für sie besteht diese Möglichkeit durch eine andere Formel, die massiver ist als die oben beschriebene. Sehen wir uns an, wie Sie mit dieser Option die Anzahl der Tage in einem Monat basierend auf einem bestimmten Kalenderdatum berechnen.

  1. Wählen Sie die Zelle aus, um das Ergebnis anzuzeigen, und wechseln Sie zum Fenster mit den Operatorargumenten DER TAG in einer uns bereits bekannten Weise. Platzieren Sie den Cursor im einzigen Feld dieses Fensters und klicken Sie auf das umgekehrte Dreieck links neben der Bearbeitungsleiste. Gehen Sie zum Abschnitt "Andere Funktionen...".
  2. Im Fenster Funktionsassistenten in einer Gruppe "Datum (und Uhrzeit" Markieren Sie den Namen „DATUM VON“ und drücken Sie die Taste "OK".
  3. Das Bedienerfenster öffnet sich DATUM. Diese Funktion wandelt das Datum aus dem üblichen Format in einen numerischen Wert um, den der Bediener dann verarbeiten muss DER TAG.

    Das sich öffnende Fenster besteht aus drei Feldern. Auf dem Feld "Der Tag" Sie können die Nummer sofort eingeben „1“. Dies ist in jeder Situation die gleiche Aktion. Die anderen beiden Bereiche müssen jedoch gründlich behandelt werden.

    Platzieren Sie den Cursor im Feld "Jahr". Als nächstes gehen wir zur Auswahl der Operatoren über das bekannte Dreieck über.

  4. Alle in derselben Kategorie Funktionsassistenten Markieren Sie den Namen "JAHR" und klicken Sie auf die Schaltfläche "OK".
  5. Das Fenster mit den Operatorargumenten wird geöffnet JAHR. Es ermittelt das Jahr anhand der angegebenen Zahl. In einem einzigen Fensterfeld „Datum im numerischen Format“ Wir geben einen Link zu der Zelle an, die das ursprüngliche Datum enthält, für das wir die Anzahl der Tage bestimmen müssen. Beeilen Sie sich danach nicht, auf die Schaltfläche zu klicken "OK", und klicken Sie auf den Namen „DATUM VON“ in der Bearbeitungsleiste.
  6. Dann kehren wir wieder zum Argumentfenster zurück DATUM. Platzieren Sie den Cursor im Feld "Monat" und fahren Sie mit der Auswahl der Funktionen fort.
  7. IN Funktionsassistent Klicken Sie auf den Namen "MONAT" und drücken Sie die Taste "OK".
  8. Das Fenster mit den Funktionsargumenten wird geöffnet MONAT. Seine Aufgaben ähneln denen des vorherigen Operators, nur dass er den Wert der Monatszahl anzeigt. Im einzigen Feld dieses Fensters setzen wir den gleichen Link zur Originalnummer. Klicken Sie dann in der Bearbeitungsleiste auf den Namen "DER TAG".
  9. Rückkehr zum Argumentfenster DER TAG. Hier müssen wir nur eine kleine Berührung vornehmen. Fügen Sie im einzigen Feld des Fensters, das bereits Daten enthält, den Ausdruck am Ende der Formel hinzu „-1“ ohne Anführungszeichen und setzen Sie auch „+1“ nach dem Operator MONAT. Klicken Sie anschließend auf die Schaltfläche "OK".
  10. Wie Sie sehen, zeigt die zuvor ausgewählte Zelle die Anzahl der Tage im Monat an, zu dem das angegebene Datum gehört. Die allgemeine Formel sieht so aus:

    TAG(DATUM(JAHR(D3),MONAT(D3)+1,1)-1)

Das Geheimnis dieser Formel ist einfach. Wir ermitteln damit das Datum des ersten Tages der nächsten Periode und subtrahieren dann einen Tag davon, um die Anzahl der Tage im angegebenen Monat zu erhalten. Die Variable in dieser Formel ist der Zellbezug D3 an zwei Orten. Wenn Sie es durch die Adresse der Zelle ersetzen, in der sich in Ihrem speziellen Fall das Datum befindet, können Sie diesen Ausdruck einfach und ohne Hilfe in ein beliebiges Element des Blattes eingeben Funktionsassistenten.

Wie Sie sehen, gibt es in Excel mehrere Möglichkeiten, die Anzahl der Tage eines Monats herauszufinden. Welches zu verwenden ist, hängt vom Endziel des Benutzers sowie davon ab, welche Version des Programms er verwendet.

Notiz: Dieser Beitrag ist eine Übersetzung des Artikels cmcenroe.me/2014/12/05/days-in-month-formula.html ( Teil I), sowie der Zusatz des Autors dazu ( Teil II). Der Stoff sollte nicht ernst genommen werden, sondern eher als Denkübung, die kaum mehr als schulische Rechenkenntnisse erfordert und keine praktische Anwendung hat. Viel Spaß beim Lesen!

Teil I

Einführung

Kürzlich, nach einer weiteren schlaflosen Nacht, dachte ich über Methoden nach, wie ich mir die Anzahl der Tage in jedem Monat des Jahres merken könnte. Dafür gibt es einen Abzählreim und auch eine Möglichkeit, auf die Fingerknöchel zu zählen, aber weder das eine noch das andere passte zu mir. Ich fragte mich, ob es vielleicht eine mathematische Formel zur Lösung eines solchen Problems gäbe, und da ich bei einer oberflächlichen Recherche keine fand, forderte ich mich selbst heraus, sie zu entwickeln.

Formalisierung Mit anderen Worten: Es ist notwendig, die Funktion zu finden F, so dass der Wert f(x) für jeden Monat X, dargestellt durch eine Zahl von 1 bis 12, entspricht der Anzahl der Tage in diesem Monat. Tabelle der Argument- und Funktionswerte:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Wenn Sie versucht waren, es selbst auszuprobieren, bevor Sie meine Lösung gelesen haben, ist jetzt der richtige Zeitpunkt dafür. Wenn Sie lieber sofort die fertige Antwort sehen möchten, schauen Sie unter den Spoiler.

Antwort


Nachfolgend sind meine Schritte aufgeführt, um eine Lösung zu finden.

Mathematischer Apparat

Lassen Sie uns zunächst kurz unsere Erinnerung an zwei Operatoren auffrischen, die für die Lösung dieses Problems von entscheidender Bedeutung sind: Ganzzahldivision und Restdivision.

Ganzzahlige Division Dies ist ein Operator, der in vielen Programmiersprachen verwendet wird, um zwei ganze Zahlen zu dividieren und den Bruchteil aus dem Quotienten zu entfernen. Ich werde es so darstellen. Zum Beispiel:

Rest der Division Dies ist ein Operator, der den Rest einer Division ermittelt. Viele Programmiersprachen verwenden das Symbol % , verwende ich Konstruktionen wie zum Beispiel:

Beachten Sie, dass der Rest der Division die gleiche Priorität wie die Division hat.

Grundlagen

Lassen Sie uns also unseren mathematischen Apparat verwenden, um die Grundformel zu erhalten. Ein normaler Monat hat 30 oder 31 Tage, wir können also zwischen 1 und 0 wechseln und dieser Zahl dann einfach eine Konstante hinzufügen:

Wir erhalten eine Tabelle mit den korrekten Werten, die fett hervorgehoben sind:
X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 30 31 30 31 30

Kein schlechter Anfang! Für den Januar und für die Monate März bis einschließlich Juli liegen bereits korrekte Werte vor. Der Februar ist ein Sonderfall, und wir werden uns etwas später damit befassen. Nach Juli sollte die Reihenfolge des Erhalts von 0 und 1 für die verbleibenden Monate umgekehrt werden.
Dazu können wir 1 zur Dividende addieren:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 30 31 30 31 30 31 30 31 30 31 30 31

Die Werte für August bis Dezember sind mittlerweile korrekt, die Werte für die anderen Monate sind jedoch erwartungsgemäß falsch. Mal sehen, wie wir diese Formeln kombinieren können.

Maskenüberlagerung

Dies erfordert eine stückweise Funktion, aber da ich sie langweilig fand, habe ich über eine andere Lösung nachgedacht und einen Teil der Funktion in einem Intervall verwendet, den anderen in einem anderen.
Ich glaube, dass der einfachste Weg darin besteht, einen Ausdruck zu finden, der in einem Anwendungsbereich gleich 1 und im Rest gleich 0 ist. Die Methode, bei der wir durch Multiplikation eines Arguments mit einem Ausdruck es außerhalb seines Gültigkeitsbereichs aus der Formel ausschließen, habe ich „Maskenauferlegung“ genannt, da dieses Verhalten einer Art Bitmaske ähnelt.
Um diese Methode zu verwenden, müssen wir im letzten Teil unserer Funktion einen Ausdruck finden, der gleich 1 ist, und – da die Argumentwerte immer kleiner als 16 sind – funktioniert die ganzzahlige Division durch 8 hierfür gut.
X 1 2 3 4 5 6 7 8 9 10 11 12
X ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Wenn wir nun diese Maske verwenden und einen Ausdruck anstelle von 1 im Dividenden verwenden, können wir die Reihenfolge, in der wir 0 und 1 in der Formel erhalten, umkehren:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 31 30 31 30 31

Heureka! Bis auf Februar stimmt alles. Überraschung Überraschung.

Februar

Jeder Monat hat 30 oder 31 Tage, außer der Februar hat 28 (Schaltjahre gehen über den Rahmen dieser Aufgabe hinaus). Derzeit sind es nach unserer Formel 30 Tage, daher wäre es schön, den Ausdruck gleich 2 bei zu subtrahieren.
Das Beste, was mir einfällt, ist Folgendes, das die Maske auf alle Monate nach Februar anwendet:
X 1 2 3 4 5 6 7 8 9 10 11 12
2 mod X 0 0 2 2 2 2 2 2 2 2 2 2

Wenn wir die Basiskonstante auf 28 ändern und 2 zu den verbleibenden Monaten addieren, erhalten wir die Formel:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 29 28 31 30 31 30 31 31 30 31 30 31

Leider ist der Januar nun 2 Tage kürzer. Aber glücklicherweise ist es sehr einfach, einen Ausdruck zu finden, der nur für den ersten Monat gilt: Er ist der Kehrwert der abgerundeten Zahl. Wenn wir es mit 2 multiplizieren, erhalten wir die endgültige Formel:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Nachwort

Hier ist sie – eine Formel, mit der Sie mithilfe einfacher Arithmetik die Anzahl der Tage in einem beliebigen Monat des Jahres ermitteln können. Wenn Sie sich das nächste Mal fragen, wie viele Tage der September hat, verwenden Sie einfach diese einzeilige JavaScript-Funktion:

Funktion f(x) ( return 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )

Teil II

Einführung

Im ersten Teil wurde eine kurze und sogar leicht elegante Formel erhalten, deren Hauptvorteile die Einfachheit des mathematischen Apparats, das Fehlen von Zweigen und bedingten Ausdrücken sowie die Prägnanz sind. Zu den Nachteilen gehört – neben der Tatsache, dass Sie es in Ihrem Projekt nicht verwenden werden – die fehlende Prüfung auf Schaltjahre und Nicht-Schaltjahre.
Also habe ich es mir zur Aufgabe gemacht, eine Funktion zu erstellen F, so dass der Wert f(x, y) für jeden Monat X, dargestellt durch eine Zahl von 1 bis 12 und das Jahr j, größer als 0, entspricht der Anzahl der Tage in einem Monat X pro Jahr j.
Für die Ungeduldigen gibt es unter dem Spoiler eine fertige Antwort, aber im Übrigen bitte ich Sie, mir zu folgen.

Antwort

Rest der Division: Mod Und ⌊⌋

Der visuellen Klarheit halber vereinbaren wir, dass in einigen Formeln der Divisionsoperator mit Rest durch untere Klammern ersetzt wird, wo es mir notwendig erschien:

Schaltjahr

Während eines Schaltjahres wird ein zusätzlicher Kalendertag eingeführt: der 29. Februar. Wie Sie wissen, ist ein Schaltjahr ein Jahr, das durch 4 teilbar und nicht durch 100 oder durch 400 teilbar ist. Schreiben wir den Ausdruck, der mit dieser Aussage identisch ist:

Um diesen Ausdruck in einen algebraischen umzuwandeln, ist es notwendig, eine Injektion der Form auf das Ergebnis des Ausdrucks anzuwenden:

Dadurch erhalten Sie 1 bei der Division ohne Rest und 0 bei der Division mit Rest, um sie in der Formel zur Bestimmung der Anzahl der Tage in einem Monat zu verwenden.

Als eine Funktion G" Sie können 1 minus den Rest der Division verwenden für:

X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) Unendlichkeit 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Es ist leicht zu erkennen, dass wir durch Erhöhen von Dividende und Divisor um 1 die richtige Formel erhalten für:
X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Daher schreiben wir den Ausdruck als:


Und schreiben wir den Ausdruck so:

Mit diesem Ansatz erhalten wir die folgende Funktion g(y), dessen Wert 1 ist, wenn das Jahr ein Schaltjahr ist, andernfalls 0:

j 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g(y) 0 0 1 0 0 0 1 0 0 0 1
j 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g(y) 1 0 0 0 1 0 0 0 1 0 0

Schaltjahre sind fett dargestellt.

Ich möchte Sie daran erinnern, dass im Rahmen der getroffenen Vereinbarung der Betreiber für die Erlangung des Restbetrags der Teilung wie folgt dargestellt werden kann: Mod, so und ⌊⌋.

Maskenüberlagerung

In der Formel handelt es sich bei dem Teil um eine Änderung, die den Januar um 2 Tage verlängert. Wenn wir den Faktor 2 entfernen und die 1 durch 2 im Zähler ersetzen, addiert diese Formel 2 Tage zum Januar und 1 Tag zum Februar, was uns den Schlüssel zum Addieren eines Tages in einem Schaltjahr gibt. Der Übersichtlichkeit halber verwenden wir in der Formel einen Zwischenwert g(y) und wie j Wir verwenden 2000 (Schaltjahre) und 2001 (Nicht-Schaltjahre):

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Die Werte für alle Monate außer Januar der Nicht-Schaltjahre sind korrekt.

Um dieses ärgerliche Missverständnis zu korrigieren, addieren wir zum Januar einen Tag hinzu, indem wir die uns bereits bekannte Formel verwenden:


Oder:

X 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Abschluss

Als Ergebnis wurde eine viel umständlichere, aber universellere Formel erhalten, mit der sich auch die Anzahl der Tage in einem Monat eines bestimmten Jahres ermitteln lässt:

Funktion f(x, y) ( return 28 + ((x + Math.floor(x / 8)) % 2) + 2 % x + Math.floor((1 + (1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1)) + (1 - (y % 400 + 2) % (y % 400 + 1))) / x) + Math.floor(1/x) - Math.floor(((1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1 )) + (1 - (y % 400 + 2) % (y % 400 + 1)))/x )
Beispiel in C# ideone.com/fANutzen.

1 . Ich weiß nicht, wie man solche Mnemoniken benutzt, also habe ich mir das Schild im Internet angesehen.
2 . „Die Grundlagen“ oder „Regel mit vielen Ausnahmen“, wie die meisten Regeln.
3 . Ursprünglich war der Februar im römischen Kalender der letzte Monat des Jahres, daher ist es sinnvoll, dass er kürzer ist als alle anderen. Es ist auch logisch, einen Tag am Ende des Jahres hinzuzufügen oder zu entfernen, sodass seine Länge variabel ist.

Aktualisiert. 1:
Alternative Übersetzung des ersten Teils in

 
Artikel Von Thema:
MTS Easy Payment-Dienst So verwenden Sie MTS Mobile Payment
Es kommt vor, dass sich auf Ihrem Mobilfunkkonto ein großer Betrag ansammelt. Wo soll ich es hinstellen, außer für Kommunikationsdienste zu bezahlen? Darüber werden wir sprechen. Um diese Frage zu beantworten, gehen wir auf die Website https://pay.mts.ru/webportal/zahlungen. Dies ist die Seite für den „Lightweight“-Dienst
Drucken von Informationen auf einem Drucker von einem Computer oder Laptop aus
Nachdem Sie sichergestellt haben, dass der Drucker angeschlossen ist, die Treiber installiert sind und das Gerät ordnungsgemäß funktioniert, können Sie mit dem Drucken beginnen. Schauen wir uns am Beispiel des Office-Programms Word an, wie man einen Text ausdruckt. Öffnen Sie ein fertiges Textdokument oder bereiten Sie es selbst vor
Neue Schnittstellenfunktionen
Hallo. Heute werden wir über Schnittstellen und Formulare in 1C:Enterprise 8.2 sprechen. Bei der Bereitstellung ist mir aufgefallen, wie viele Leute die Befehlsschnittstelle nur optisch von der regulären Schnittstelle unterscheiden, also habe ich beschlossen, dies klarzustellen.Reguläre SchnittstelleNormale Benutzeroberfläche
So löschen Sie Fotos von Facebook. Löschen eines Albums mit Fotos
Eine Vielzahl von Bildern und Videos machen die Kommunikation im sozialen Netzwerk viel interessanter. Ein rein technischer Punkt: Bevor Sie Inhalte hochladen, müssen Sie diese erstellen oder irgendwo herunterladen. Das gleiche Foto muss bereits auf allen zugänglichen Medien verfügbar sein.