Heim / Den PC beherrschen / Ermitteln der Anzahl der Tage in einem Monat in Microsoft Excel. Wie berechnet man die Anzahl der Tage darin mit einer mathematischen Formel anhand der Monatsnummer? Für 13 Kalendertage

Ermitteln der Anzahl der Tage in einem Monat in Microsoft Excel. Wie berechnet man die Anzahl der Tage darin mit einer mathematischen Formel anhand der Monatsnummer? Für 13 Kalendertage

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 innerhalb der Formel angeben, die das Programm ausgibt notwendige Berechnungen. Excel verfügt über Tools zum Ausführen dieses Vorgangs. überlegen wir uns verschiedene Wege Anwendung dieser Möglichkeit.

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 anzuwenden ist, müssen Sie zunächst die Ziele der Operation festlegen. Abhängig davon kann das Ergebnis der Berechnung in einem separaten Element auf dem Blatt angezeigt oder in einer anderen Formel verwendet werden.

Methode 1: Kombination aus DAY- und EOMONTH-Operatoren

Die meisten auf einfache Weise Um dieses Problem zu lösen, ist eine Kombination von Operatoren TAG und EMONAT.

Funktion TAG gehört zur Gruppe der Operatoren "Datum (und Uhrzeit". Es zeigt auf eine bestimmte Zahl 1 Vor 31 . In unserem Fall die Aufgabe angegebenen Betreiber zeigt den letzten Tag des Monats mit der eingebauten Funktion als Argument an EMONAT.

Operatorsyntax TAG nächste:

TAG(Datum_im_Zahlenformat)

Das heißt, das einzige Argument für diese Funktion ist "Datum im Zahlenformat". Sie wird vom Betreiber eingestellt EMONAT. Es muss gesagt werden, dass das Datum im numerischen Format vom üblichen Format abweicht. Zum Beispiel Datum 04.05.2017 in numerischer Form aussehen wird 42859 . Daher verwendet Excel dieses Format nur für interne Vorgänge. Es wird selten für die Anzeige in Zellen verwendet.

Operator EMONAT soll die Ordnungszahl des letzten Tages des Monats angeben, der eine bestimmte Anzahl von Monaten vor oder nach dem angegebenen Datum liegt. Die Syntax der Funktion lautet:

EOMONTH(start_date, number_of_months)

Operator "Anfangsdatum" enthält das Datum, ab dem der Countdown durchgeführt wird, oder einen Verweis auf die Zelle, in der es sich befindet.

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

Sehen wir uns nun an, wie das an einem konkreten Beispiel funktioniert. Dafür nehmen wir Excel-Tabelle, in einer der Zellen, in der eine bestimmte Kalendernummer eingetragen ist. Es ist notwendig, unter Verwendung des oben angegebenen Satzes von Operatoren zu bestimmen, wie viele Tage in dem monatlichen Zeitraum liegen, auf den sich diese Zahl bezieht.


Unsere allgemeine Formel hat folgende Form:

TAG(EMONAT(B3,0))

In dieser Formel ist nur die Zelladresse ein variabler Wert ( B3). Also, wenn Sie das Verfahren nicht durch führen möchten Funktionsassistenten, können Sie einfügen diese Formel zu einem beliebigen Element des Blattes hinzufügen, indem Sie einfach die Adresse der Zelle, die die Nummer enthält, durch diejenige ersetzen, die in Ihrem speziellen Fall relevant ist. Das Ergebnis wird ähnlich sein.

Methode 2: Automatische Erkennung der Anzahl der Tage

Schauen wir uns nun ein anderes Problem an. Es ist erforderlich, dass die Anzahl der Tage nicht nach einer bestimmten Kalendernummer, sondern nach der aktuellen angezeigt wird. Außerdem würde die Änderung der Perioden automatisch ohne Benutzereingriff durchgeführt werden. Es scheint zwar seltsam, aber gestellte Aufgabe leichter als der Vorgänger. Um es zu lösen, sogar offen Funktionsassistent ist nicht erforderlich, da die Formel, die führt diese Operation, enthält keine Variablenwerte oder Zellbezüge. Sie können einfach in die Zelle des Blattes, in der das Ergebnis angezeigt werden soll, die folgende Formel ohne Änderungen eingeben:

TAG(EMONAT(HEUTE();0))

Die eingebaute Funktion HEUTE, die wir in diesem Fall verwendet haben, zeigt die heutige Zahl an und hat keine Argumente. Ihre Zelle zeigt also immer die Anzahl der Tage im aktuellen Monat an.

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

In den obigen Beispielen haben wir gezeigt, wie Sie die Anzahl der Tage in einem Monat nach der angegebenen Kalendernummer oder automatisch nach dem aktuellen Monat berechnen und das Ergebnis in einer separaten Zelle anzeigen können. Es kann jedoch erforderlich sein, diesen Wert zu ermitteln, um andere Indikatoren zu berechnen. In diesem Fall wird die Berechnung der Anzahl der Tage innerhalb einer komplexen Formel durchgeführt und nicht in einer separaten Zelle angezeigt. Sehen wir uns anhand eines Beispiels an, wie das geht.

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

TAG(EMONAT(HEUTE();0))-TAG(HEUTE())

Danach zeigt die angegebene Zelle die Anzahl der Tage bis zum Ende des Monats an. Jeden Tag wird das Ergebnis automatisch aktualisiert, und ab Beginn der neuen Periode beginnt der Countdown erneut. Es stellt sich eine Art Countdown-Timer heraus.

Wie Sie sehen können, besteht diese Formel aus zwei Teilen. Der erste von ihnen ist der bereits bekannte Ausdruck zur Berechnung der Anzahl der Tage in einem Monat:

TAG(EMONAT(HEUTE();0))

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

TÄGLICH, VON TAG ZU TAG())

Daher ist bei dieser Berechnung die Formel zur Berechnung der Anzahl der Tage ein integraler Bestandteil einer komplexeren Formel.

Methode 4: alternative Formel

Aber leider haben Versionen des Programms vor Excel 2007 keinen Operator EMONAT. 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 aus einer bestimmten Kalendernummer berechnen.

  1. Wählen Sie die Zelle aus, um das Ergebnis anzuzeigen, und wechseln Sie zum Fenster mit den Operatorargumenten TAG uns schon bekannt. Wir setzen den Cursor in das einzige Feld dieses Fensters und klicken auf das umgekehrte Dreieck links neben der Formelleiste. Gehen Sie zum Abschnitt "Mehr Funktionen...".
  2. Im Fenster Funktionsassistenten in einer Gruppe "Datum (und Uhrzeit" Markieren Sie den Namen "DAS DATUM" und klicken Sie auf die Schaltfläche OK.
  3. Das Bedienerfenster wird geöffnet DAS DATUM. Diese Funktion wandelt das Datum aus dem üblichen Format in einen numerischen Wert um, den der Bediener dann verarbeiten muss TAG.

    Das sich öffnende Fenster hat drei Felder. Auf dem Feld "Tag" Sie können eine Nummer eingeben "eines". Dies wird die gleiche Aktion für jede Situation sein. Aber die beiden anderen Bereiche müssen gründlich behandelt werden.

    Setzen Sie den Cursor in das Feld "Jahr". Als nächstes wenden wir uns der Auswahl der Operatoren durch das bekannte Dreieck zu.

  4. Alle in der gleichen Kategorie Funktionsassistenten Markieren Sie den Namen "JAHR" und klicken Sie auf die Schaltfläche OK.
  5. Das Fenster „Operatorargumente“ wird geöffnet JAHR. Er bestimmt das Jahr aus der angegebenen Zahl. Im einzigen Feld des Fensters "Datum im Zahlenformat" Geben Sie einen Verweis auf eine Zelle an, die das ursprüngliche Datum enthält, für das Sie die Anzahl der Tage bestimmen möchten. Beeilen Sie sich danach nicht, auf die Schaltfläche zu klicken OK und klicken Sie auf den Namen "DAS DATUM" in der Bearbeitungsleiste.
  6. Dann kehren wir wieder zum Argumentfenster zurück DAS DATUM. Setzen Sie den Cursor in das Feld "Monat" und weiter zur Auswahl der Funktionen.
  7. BEI Funktionsassistent klicken Sie auf den Namen "MONAT" und klicken Sie auf die Schaltfläche OK.
  8. Das Funktionsargumentfenster wird gestartet MONAT. Seine Aufgaben sind ähnlich wie beim vorherigen Operator, nur dass er den Wert der Monatszahl anzeigt. Im einzigen Feld dieses Fensters setzen wir den gleichen Verweis auf die ursprüngliche Nummer. Klicken Sie dann in der Bearbeitungsleiste auf den Namen "TAG".
  9. Zurück zum Argumente-Fenster TAG. Hier müssen wir nur eine kleine Berührung machen. Fügen Sie im einzigen Feld des Fensters, in dem sich die Daten bereits befinden, den Ausdruck am Ende der Formel hinzu "-eines" ohne Anführungszeichen, und setzen Sie auch "+1" nach dem Operator MONAT. Klicken Sie danach auf die Schaltfläche OK.
  10. Wie Sie sehen können, zeigt die vorausgewählte Zelle die Anzahl der Tage im Monat an, zu denen die angegebene Zahl gehört. Die allgemeine Formel sieht so aus:

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

Das Geheimnis dieser Formel ist einfach. Wir verwenden es, um das Datum des ersten Tages der nächsten Periode zu bestimmen, und subtrahieren dann einen Tag davon, um die Anzahl der Tage im angegebenen Monat zu erhalten. Die Variable in dieser Formel ist ein Zellbezug D3 an zwei Stellen. 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 ohne Hilfe in ein beliebiges Element des Blattes treiben Funktionsassistenten.

Wie Sie sehen können, gibt es in Excel mehrere Möglichkeiten, die Anzahl der Tage in einem Monat herauszufinden. Welches zu verwenden ist, hängt vom Endziel des Benutzers sowie von der Version des Programms ab, das er verwendet.

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

Wie viele Tage zwischen den Terminen? Anweisung

Sie legen einfach einen bestimmten Start- und Endtag fest und erhalten in Sekundenbruchteilen eine Berechnung. Der Online-Rechner berechnet alle Daten selbstständig. Wenn Sie die ursprünglichen Wochentage ändern, wird das Ergebnis automatisch neu berechnet, um das Schaltjahr zu berücksichtigen.

Wichtig: Sie können die monatlichen Arbeitstage/-stunden nicht aus Berechnungen früherer Jahre übernehmen und als Berechnungen angeben - die Daten werden variieren. Verwenden Sie daher besser einen Taschenrechner.

Das Verfahren ist also:

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

Wofür können Sie den Rechner verwenden?

  1. Um Vertragsstrafen und Verzögerungen zu berechnen
  2. Wie man die Effizienz der Nutzung einer Ressource und die Fristen für ihre Nutzung versteht
  3. Wie Sie eine Aufgabe nicht versehentlich an einem Wochenende planen
  4. Wie viel Zeit bleibt bis zum Abgabetermin

Beispiel:

Sie sind Buchhalter. Der Manager hat Sie gebeten, in den nächsten Minuten Daten über die Anzahl der Arbeitsstunden anzugeben, die alle Mitarbeiter des Unternehmens im Februar leisten sollten. Die Anzahl der Mitarbeiter können Sie ganz einfach ermitteln – Sie haben Zahlen vor Augen. Aber die Stunden müssen gezählt werden .... Und wie viele Tage hat der Februar? Was ist mit einem Schaltjahr? An welchen Tagen waren die freien Tage? Und wie bestimmt man die Anzahl der Urlaubstage?

Lösung: Verwenden 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 Funktionen aus

Möchten Sie Buchhaltung führen, Berichte senden und Berechnungen in einem bequemen und einfachen Webservice durchführen? Kontur.Accounting 14 Tage kostenlos testen! Wir werden Ihnen schnell beibringen, wie Sie den Service nutzen und alle Ihre Fragen beantworten!

Notiz: Dieser Beitrag ist eine Übersetzung des Artikels cmcenroe.me/2014/12/05/days-in-month-formula.html ( Teil I), sowie die Hinzufügung des Autors ( Teil II). Der Stoff ist nicht ernst zu nehmen, sondern eher als Aufwärmübung für den Geist, die lediglich schulische Rechenkenntnisse voraussetzt und keinen praktischen Bezug hat. Allen viel Spaß beim Lesen!

Teil I

Einführung

Kürzlich, nach einer weiteren schlaflosen Nacht, dachte ich über Methoden nach, wie man sich die Anzahl der Tage in jedem Monat des Jahres merken kann. Dafür gibt es einen Zähler sowie eine Möglichkeit, auf die Fingerknöchel zu zählen, aber weder das eine noch das andere hat mir gepasst. Ich fragte mich, ob es eine mathematische Formel zur Lösung eines solchen Problems gibt, und – ohne bei einer flüchtigen Studie eine zu finden – forderte ich mich heraus, eine zu erstellen.

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 zwischen 1 und 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 zu versuchen, bevor Sie meine Lösung gelesen haben, ist jetzt der richtige Zeitpunkt. Wenn Sie die fertige Antwort lieber sofort sehen möchten, dann schauen Sie unter den Spoiler.

Antworten


Im Folgenden sind meine Schritte, um die Lösung zu finden.

Mathematischer Apparat

Lassen Sie uns zunächst kurz unsere Erinnerung an zwei wichtige Operatoren für die Lösung dieses Problems auffrischen: die ganzzahlige Division und den Rest der Division.

Ganzzahlige Division ist ein Operator, der in vielen Programmiersprachen verwendet wird, wenn zwei ganze Zahlen dividiert und aus dem Quotienten verworfen werden Bruchteil. Ich werde es darstellen als. Zum Beispiel:

Rest der Teilung ist ein Operator, der den Rest einer Division findet. Viele Programmiersprachen verwenden das Symbol % , aber ich werde Konstruktionen der Form verwenden, zum Beispiel:

Ich stelle fest, dass der Rest der Teilung die gleiche Priorität wie die Teilung hat.

Grundlagen

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

Wir erhalten eine Tabelle, die korrekten Werte sind fett hervorgehoben:
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! Es gibt bereits korrekte Werte für Januar und für die Monate März bis einschließlich Juli. Der Februar ist ein Sonderfall, und wir werden uns später damit befassen. Nach Juli sollte für die verbleibenden Monate die Reihenfolge der Erlangung von 0 und 1 umgekehrt werden.
Dazu können wir zum Dividenden 1 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

Jetzt sind die korrekten Werte von August bis Dezember, aber wie erwartet sind die Werte für die anderen Monate falsch. Mal sehen, wie wir diese Formeln kombinieren können.

Auftragen einer Maske

Dies erfordert eine stückweise Funktion, aber da es mir langweilig erschien, dachte ich über eine andere Lösung nach, indem ich einen Teil der Funktion in einem Intervall und den anderen in dem anderen verwendete.
Ich denke, der einfachste Weg ist, einen Ausdruck zu finden, der in einer Anwendung 1 und in den anderen 0 ist. Die Methode, bei der wir ein Argument durch Multiplikation mit einem Ausdruck aus der Formel außerhalb seines Gültigkeitsbereichs ausschließen, habe ich „Maskierung“ genannt, weil dieses Verhalten einer Art Bitmaske ähnelt.
Um diese Methode zu verwenden, müssen wir im letzten Teil unserer Funktion einen Ausdruck gleich 1 mit finden, und - da die Argumentwerte immer kleiner als 16 sind - ist die ganzzahlige Division durch 8 dafür in Ordnung.
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

Mit Hilfe dieser Maske können wir nun mit einem Ausdruck anstelle von 1 im Dividenden die Reihenfolge umkehren, in der 0 und 1 in der Formel erhalten werden:

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

Eureka! Alles ist korrekt, außer Februar. Überraschung Überraschung.

Februar

Jeder Monat hat 30 oder 31 Tage, außer Februar mit seinen 28 (Schaltjahr ist für diese Aufgabe nicht möglich). Im Moment hat es nach unserer Formel 30 Tage, also wäre es schön, den Ausdruck gleich 2 mit zu subtrahieren.
Das Beste, was mir eingefallen ist, ist dieses, das alle Monate nach Februar maskiert:
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

Indem wir die Basiskonstante auf 28 ändern und 2 zu den restlichen Monaten hinzufügen, 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 jetzt um 2 Tage kürzer. Aber glücklicherweise ist es sehr einfach, einen Ausdruck zu finden, der nur für den ersten Monat gilt: Es 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 es - eine Formel, um die Anzahl der Tage in einem beliebigen Monat des Jahres mit der einfachsten Arithmetik zu ermitteln. Wenn Sie sich das nächste Mal daran erinnern, wie viele Tage der September hat, tun Sie es einfach mit diesem JavaScript-Einzeiler:

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 etwas elegante Formel erhalten, deren Hauptvorteile die Einfachheit des mathematischen Apparats, das Fehlen von Verzweigungs- und Bedingungsausdrü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 Überprüfung auf Schalt- und Nicht-Schaltjahre.
Also habe ich mir die Aufgabe gestellt, 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 ein Jahr j größer als 0 entspricht der Anzahl der Tage im Monat x pro Jahr j.
Für die Ungeduldigen gibt es eine fertige Antwort unter dem Spoiler, aber für den Rest folgt mir bitte.

Antworten

Rest der Teilung: Mod und ⌊⌋

Vereinbaren wir zur besseren Übersichtlichkeit, dass in manchen Formeln der Divisionsoperator mit Rest durch untere Klammern ersetzt wird, wo es mir notwendig erschien:

Schaltjahr

In einem Schaltjahr wird ein zusätzlicher Tag eingeführt: der 29. Februar. Wie Sie wissen, ist ein Schaltjahr ein Jahr, das ein Vielfaches von 4 und kein Vielfaches von 100 oder ein Vielfaches von 400 ist. Schreiben wir einen Ausdruck, der mit dieser Aussage identisch ist:

Um diesen Ausdruck in einen algebraischen umzuwandeln, muss eine Injektion der Form auf das Ergebnis des Ausdrucks angewendet werden:

Dadurch erhalten Sie 1 beim Teilen ohne Rest und 0 beim Teilen mit Rest, um es 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 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 sehen, dass wir durch Erhöhen des Dividenden und des Divisors 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 wie folgt:


Schreiben wir den Ausdruck wie folgt:

Wenden wir diesen Ansatz an, erhalten wir nächste Funktion g(y), die 1 ist, wenn das Jahr ein Schaltjahr ist, oder 0 andernfalls:

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 hervorgehoben.

Ich erinnere Sie daran, dass im Rahmen der akzeptierten Vereinbarung der Betreiber für die Erlangung des Restes aus der Teilung als dargestellt werden kann Mod, so und ⌊⌋.

Auftragen einer Maske

In der Formel ist der Teil eine Anpassung, die dem Januar zwei Tage hinzufügt. Wenn wir den Faktor 2 entfernen und den Zähler von 1 auf 2 ändern, fügt diese Formel dem Januar 2 Tage und dem Februar einen Tag hinzu, was uns den Schlüssel zum Hinzufügen eines Tages in einem Schaltjahr gibt. Der Übersichtlichkeit halber verwenden wir in der Formel einen Zwischenwert g(y) und wie j mit 2000 (Schaltjahr) und 2001 (Nicht-Schaltjahr):

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 eines Nicht-Schaltjahres sind korrekt.

Um dieses unglückliche Missverständnis zu korrigieren, addieren Sie 1 Tag zum Januar nach der uns bereits bekannten Formel:


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

Fazit

Als Ergebnis hat man eine viel umständlichere, aber universellere Formel erhalten, die auch verwendet werden kann, um die Anzahl der Tage in einem Monat eines bestimmten Jahres zu erhalten:

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); )
C#-Beispiel ideone.com/fANutz .

1 . Ich weiß nicht, wie man eine solche Mnemonik benutzt, also habe ich ein Zeichen im Internet ausspioniert.
2 . "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 logisch, dass er kürzer ist als alle anderen. Es ist auch logisch, einen Tag genau am Ende des Jahres hinzuzufügen oder zu entfernen, sodass seine Länge variabel ist.

Aktualisiert eines:
Alternative Übersetzung des ersten Teils in

Der Datumsrechner wurde entwickelt, um die Anzahl der Tage zwischen Daten zu berechnen und ein Datum zu finden, indem eine bestimmte Anzahl von Tagen zu einem bekannten Datum addiert oder subtrahiert wird.

Fügen Sie einem Datum Tage hinzu

Um herauszufinden, welches Datum in einer bestimmten Anzahl von Tagen sein wird, verwenden Sie diese Option. Geben Sie das Startdatum und die Anzahl der Tage ein, die hinzugefügt werden sollen. Verwenden Sie zum Subtrahieren den Minuswert. Der Rechner hat auch die Option, nur Werktage hinzuzufügen.

Berechnung der Anzahl der Tage zwischen Daten

Diese Berechnungsmethode beantwortet die Frage "wie viele Tage seit dem Datum vergangen sind". Geben Sie das Start- und Enddatum ein und klicken Sie auf die Schaltfläche "Berechnen". Der Rechner zeigt an, wie viele Tage zwischen den eingegebenen Daten liegen. Separat zeigt der Rechner die Anzahl der Arbeitstage an.

Mit dieser Option können Sie berechnen, wie viele Tage bis zu einem bestimmten Ereignis verbleiben, z. B. einem Geburtstag oder einem Feiertag. Geben Sie dazu im Feld Startdatum das heutige Datum und im Feld Enddatum das Datum der Veranstaltung ein.

Feiertage

Der Rechner kann sowohl Kalendertage als auch Arbeitstage berechnen, addieren und subtrahieren. Offizielle arbeitsfreie Feiertage sind:

  • 1.,2.,3.,4.,5.,6.,8. Januar - Neujahrsferien
  • 7. Januar - Orthodoxes Weihnachten
  • 23. Februar - Tag des Verteidigers des Vaterlandes
  • 8. März - Internationaler Frauentag
  • 1. Mai - Frühling und Tag der Arbeit
  • 9. Mai - Tag des Sieges
  • 12. Juni - Tag Russlands
  • 4. November - Tag der Nationalen Einheit

Fällt ein Feiertag auf einen Samstag oder Sonntag, verschiebt er sich auf den nächsten Werktag. Aber manchmal wird das Wochenende an einen ganz anderen Ort im Kalender verschoben. Beispielsweise können Samstage und Sonntage, die auf Neujahrsfeiertage fallen, in den Mai verschoben werden, um die Maiferien zu verlängern.

Bei der Berechnung der Tage berücksichtigt der Rechner sowohl gesetzliche Feiertage als auch alle Überweisungen.

Kürzlich, nach einer langen Zeit ohne Schlaf, habe ich darüber nachgedacht, wie man die Anzahl der Tage in einem Monat herausfinden kann, wenn man seine Anzahl kennt. Es gibt Kinderreime zu diesem Thema, es gibt eine Möglichkeit, nach Knochen 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 einer Weile abgeleitet habe.

Also die Aufgabe

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

Zu beachten ist, dass wir als Argument nur die Zahl des Monats erhalten, also wir berücksichtigen keine Schaltjahre, und f(2) = 28.

Wenn Sie das Ergebnis wissen möchten, das ich erhalten habe, scrollen Sie zum Ende dieser Seite. Was nachstehend beschrieben wird, ist die Ableitung der gewünschten Formel.

Was werden wir verwenden

Zusätzlich zu Addition, Subtraktion und Multiplikation werde ich zwei Operationen verwenden: ganzzahlige Division und die Operation, den Rest zu bilden. Lassen Sie mich Sie daran erinnern, was es ist:

  • Ganzzahlige Division, oder "Division abrunden". Für mich wird es als normale Teilung dargestellt: a / b - bedeutet ⌊a / b⌋ . Zum Beispiel 5 / 3 = 1 .
  • Den Rest modulo nehmen. Ich werde die Division traditionell mit einem Rest bezeichnen: a % b \u003d a - (a / b) * b. Zum Beispiel 5 % 3 = 2 .

Sie haben den gleichen Vorrang und sind links assoziativ.

Grundlagen oder eine Regel mit vielen Ausnahmen

Versuchen wir, ein Muster zu finden, das möglichst viele Werte des Arguments 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 Ungeradheit des Monats feststellen - was bedeutet, dass wir die Operation verwenden werden, den Rest modulo 2 zu bilden. Es scheint dass es so etwas sein sollte:

f₁(x) = 30 + x%2


Guter Start! Abgesehen vom Februar, der offensichtlich einige Tricks durchziehen muss, werden wir froh sein, dass wir die Funktion für das erste Halbjahr anpassen konnten. Und dann muss ab August die Parität ins Gegenteil geändert werden. Dies kann durch Austausch erfolgen x%2 in der ersten Version der Formel (x+1)%2:

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


Das erste Halbjahr liegt nun erwartungsgemäß außerhalb des korrekten Wertebereichs, aber die Monate August bis Dezember gaben uns das, was wir brauchten. Lassen Sie uns einen Weg finden, diese beiden Teile zu kombinieren.

Maske

Wir brauchen das +1 im Dividenden nur dann zu "aktivieren", wenn das Argument Werte größer als 8 erreicht, d.h. Wir müssen eine Maske auftragen. Gleichzeitig dürfen die Werte des Arguments 12 nicht überschreiten. Daher ist die ganzzahlige Division des Arguments durch 8 für uns ideal:


Genau so, wie wir es brauchen. Verwenden wir diese Ausgabe:

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


Wow! Alles ist korrekt, außer Februar. Wie unerwartet.

Februar

Alle Monate haben 30 oder 31 Tage, aber der Februar hat 28 (ich erinnere Sie daran, dass wir keine Schaltjahre berücksichtigen).

Geschichtlicher Bezug: Im römischen 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, in dem der kürzeste Monat auf Geheiß eines der weisen Herrscher näher an den Anfang gerückt wird.

In dem letzte Version unsere Formel für Februar hat sogar 30 Tage. Und deshalb müssen wir ein paar Tage von ihm abschneiden. Darunter werden natürlich auch einige andere Monate leiden: entweder links vom Februar, oder rechts davon in unserer Liste - rechts stehen aber viel weniger Monate, also müssen wir den Januar opfern und dann den anpassen Formel dafür. Mit dem Ausdruck können Sie Tage für den ersten und zweiten Monat abschneiden 2 % x.