itthon / A PC elsajátítása / Egy hónap napjainak számának meghatározása Microsoft Excelben. Hogyan lehet kiszámítani a benne lévő napok számát egy matematikai képlettel a hónap számával? 13 naptári napig

Egy hónap napjainak számának meghatározása Microsoft Excelben. Hogyan lehet kiszámítani a benne lévő napok számát egy matematikai képlettel a hónap számával? 13 naptári napig

A táblázat létrehozásakor felmerülő problémák megoldásához külön cellában vagy a képletben meg kell adnia egy hónapban a napok számát, hogy a program elköltse szükséges számításokat. Az Excel rendelkezik eszközökkel a művelet végrehajtásához. fontoljuk meg különböző módokon ennek a lehetőségnek az alkalmazása.

Speciális kategóriájú operátorok segítségével kiszámíthatja az Excelben egy hónap napjainak számát "Dátum és idő". Ahhoz, hogy megtudja, melyik lehetőség a legmegfelelőbb, először meg kell határoznia a művelet céljait. Ennek függvényében a számítás eredménye a lapon külön elemben jeleníthető meg, vagy más képletben is felhasználható.

1. módszer: DAY és EOMONTH operátorok kombinációja

A legtöbb egyszerű módon a probléma megoldásához operátorok kombinációja szükséges NAPés EOMONTH.

Funkció NAP operátorok csoportjába tartozik "Dátum és idő". Egy adott számra mutat 1 előtt 31 . Esetünkben a feladat adott operátor a hónap utolsó napját jelzi a beépített függvény segítségével argumentumként EOMONTH.

Operátori szintaxis NAP következő:

DAY(dátum_számformátumban)

Vagyis ennek a függvénynek az egyetlen érve "Dátum numerikus formátumban". Az üzemeltető fogja beállítani EOMONTH. Azt kell mondanunk, hogy a dátum numerikus formátumban eltér a szokásos formátumtól. Például dátum 04.05.2017 numerikus formában így fog kinézni 42859 . Ezért az Excel ezt a formátumot csak belső műveletekhez használja. Ritkán használják cellákban való megjelenítésre.

Operátor EOMONTH a hónap utolsó napjának sorszámát hivatott jelezni, amely a megadott dátumtól számított adott számú hónap előre vagy hátra. A függvény szintaxisa a következő:

EOMONTH(kezdési_dátum,hónapok_száma)

Operátor "kezdő dátum" tartalmazza a dátumot, amelytől kezdve a visszaszámlálás történik, vagy hivatkozást arra a cellára, ahol ez található.

Operátor "Hónapok száma" az adott dátumtól számítandó hónapok számát jelzi.

Most nézzük meg, hogyan működik ez egy konkrét példán. Ehhez vesszük excel lap, amelynek egyik cellájába egy bizonyos naptári szám van beírva. A fent jelzett operátorkészlet segítségével meg kell határozni, hogy hány nap van abban a havi időszakban, amelyre ez a szám vonatkozik.


Általános képletünk a következő formában jelenik meg:

NAP (ÉHOHÓNAP(B3,0))

Ebben a képletben csak a cella címe változó érték ( B3). Így, ha nem akarja végrehajtani az eljárást keresztül Funkcióvarázslók, beillesztheti ezt a képletet a lap bármely elemére, egyszerűen lecserélve a számot tartalmazó cella címét az adott esetben relevánsra. Az eredmény hasonló lesz.

2. módszer: a napok számának automatikus felismerése

Most nézzünk egy másik problémát. Szükséges, hogy a napok száma ne egy adott naptári szám szerint, hanem az aktuálisnak megfelelően jelenjen meg. Ezenkívül az időszakok módosítása automatikusan, felhasználói beavatkozás nélkül is megtörténik. Bár furcsának tűnik, de adott feladatot könnyebb, mint az előző. Megoldásához akár nyissa meg Funkcióvarázsló nincs szükség, mert a műveletet végrehajtó képlet nem tartalmaz változó értékeket vagy cellahivatkozásokat. Egyszerűen beírhatja a lap azon cellájába, ahol az eredményt szeretné megjeleníteni, a következő képletet változtatás nélkül:

NAP(EHOHONAP(MA();0))

A beépített TODAY függvény, amelyet ebben az esetben használtunk, a mai számot jeleníti meg, és nincsenek argumentumai. Így a cellája mindig megjeleníti az aktuális hónap napjainak számát.

3. módszer: Számítsa ki az összetett képletekben használandó napok számát

A fenti példákban megmutattuk, hogyan számítható ki egy hónap napjainak száma a megadott naptári dátum szerint vagy automatikusan az aktuális hónap szerint, külön cellában megjelenítve az eredményt. Ennek az értéknek a megállapítására azonban szükség lehet más mutatók kiszámításához. Ebben az esetben a napok számának kiszámítása egy összetett képletben történik, és nem jelenik meg külön cellában. Nézzük meg, hogyan kell ezt megtenni egy példán keresztül.

Gondoskodnunk kell arról, hogy a cellában megjelenjen az aktuális hónap végéig hátralévő napok száma. Mint a korábbi módszer, ez az opció nem igényel kinyitást Funkcióvarázslók. Egyszerűen beírhatja a következő kifejezést egy cellába:

NAP(ÉHÓNAP(MA();0))-NAP(MA())

Ezt követően a megadott cellában megjelenik a hónap végéig hátralévő napok száma. Az eredmény minden nap automatikusan frissül, és az új időszak elejétől újraindul a visszaszámlálás. Kiderül, hogy egyfajta visszaszámláló.

Amint látja, ez a képlet két részből áll. Az első közülük a már ismerős kifejezés egy hónapban lévő napok számának kiszámításához:

NAP(EHOHONAP(MA();0))

De a második részben a mai számot levonjuk ebből a mutatóból:

NAPRÓL NAPRA())

Így ennek a számításnak a végrehajtásakor a napok számának kiszámítására szolgáló képlet egy bonyolultabb képlet szerves részét képezi.

4. módszer: alternatív képlet

Sajnos azonban a program Excel 2007-nél korábbi verziói nem rendelkeznek operátorral EOMONTH. Mi a helyzet azokkal a felhasználókkal, akik az alkalmazás régebbi verzióit használják? Számukra ez a lehetőség egy másik képlet révén létezik, amely a fent leírtaknál masszívabb. Nézzük meg, hogyan számítható ki egy adott naptári számból egy hónap napjainak száma ezzel az opcióval.

  1. Válassza ki a cellát az eredmény megjelenítéséhez, és lépjen az operátori argumentumok ablakba NAP már ismerős számunkra. Helyezzük a kurzort az ablak egyetlen mezőjébe, és kattintsunk a képletsor bal oldalán lévő fordított háromszögre. Menjen a szakaszhoz "További funkciók...".
  2. Az ablakban Funkcióvarázslók csoportban "Dátum és idő" jelölje ki a nevet "DÁTUM"és kattintson a gombra rendben.
  3. Megnyílik a kezelő ablak DÁTUM. Ez a funkció a dátumot a szokásos formátumról numerikus értékké alakítja, amelyet az operátornak kell feldolgoznia NAP.

    A megnyíló ablak három mezőt tartalmaz. A terepen "Nap" megadhat egy számot "egy". Ez minden helyzetben ugyanaz lesz. De a másik két területtel alaposan foglalkozni kell majd.

    Állítsa a kurzort a mezőbe "Év". Ezután rátérünk az operátorok kiválasztására az ismerős háromszögön keresztül.

  4. Mind ugyanabban a kategóriában Funkcióvarázslók jelölje ki a nevet "ÉV"és kattintson a gombra rendben.
  5. Megnyílik az operátori argumentumok ablak ÉV. A megadott számból határozza meg az évet. Az ablak egyetlen mezőjében "Dátum numerikus formátumban" adjon meg egy hivatkozást az eredeti dátumot tartalmazó cellára, amelyre vonatkozóan meg szeretné határozni a napok számát. Ezt követően ne rohanjon a gombra kattintással rendbenés kattintson a névre "DÁTUM" a képletsávban.
  6. Ezután ismét visszatérünk az argumentumok ablakához DÁTUM. Állítsa a kurzort a mezőbe "Hónap"és folytassa a funkciók kiválasztásával.
  7. NÁL NÉL Funkcióvarázsló kattintson a névre "HÓNAP"és kattintson a gombra rendben.
  8. Megnyílik a függvény argumentumai ablak HÓNAP. Feladatai hasonlóak az előző operátorhoz, csak a hónap szám értékét jeleníti meg. Ennek az ablaknak az egyetlen mezőjében ugyanazt a hivatkozást állítjuk be az eredeti számra. Ezután a képletsorban kattintson a névre "NAP".
  9. Vissza az érvek ablakhoz NAP. Itt csak egy apró érintést kell tennünk. Az ablak azon egyetlen mezőjében, amelyben az adatok már találhatók, adja hozzá a kifejezést a képlet végéhez "-egy" idézőjelek nélkül, és az operátor mögé tegyük a „+1”-et HÓNAP. Ezt követően kattintson a gombra rendben.
  10. Amint láthatja, az előre kiválasztott cella a hónap azon napjainak számát mutatja, amelyekhez a megadott szám tartozik. Az általános képlet így néz ki:

    NAP(DÁTUM(ÉV(D3),HÓNAP(D3)+1,1)-1)

Ennek a képletnek a titka egyszerű. Ezzel határozzuk meg a következő időszak első napjának dátumát, majd levonunk belőle egy napot, így megkapjuk a megadott hónapban lévő napok számát. Ebben a képletben a változó egy cellahivatkozás D3 két helyen. Ha az adott esetben lecseréli annak a cellának a címére, amelyben a dátum található, akkor egyszerűen behajthat adott kifejezést a lap bármely elemére segítség nélkül Funkcióvarázslók.

Amint láthatja, számos lehetőség van arra, hogy megtudja, hány nap van egy hónapban az Excelben. Hogy melyiket használja, az a felhasználó végső céljától, valamint attól függ, hogy a program melyik verzióját használja.

A Kontur.Accounting ingyenes online számológép segít, és megmondja, hány nap telt el kettő között adott dátumokés. Ezen túlmenően, ha van rá igény, kiszámolhatja, hogy egy év vagy több év meghatározott időszaka hány naptári, szabadnapi vagy munkanapot (órát) tartalmaz.

Hány nap a dátumok között? Utasítás

Egyszerűen be kell állítani egy konkrét kezdő és befejező napot, és a másodperc töredéke alatt megkapja a számítást. Az online számológép minden adatot függetlenül számít ki. Ha megváltoztatja a hét eredeti napjait, az eredmény automatikusan újraszámításra kerül, figyelembe véve a szökőévet.

Fontos: nem veheti ki a havi munkanapokat/órákat a korábbi évek számításaiból, és nem adhatja meg számításként – az adatok eltérőek lehetnek. Ezért jobb, ha számológépet használ.

Tehát az eljárás a következő:

  1. A „Kezdő dátum” és „Befejezés dátuma” mezőkben válassza ki a visszaszámlálás kezdő és befejező napját, 2013-tól kezdve és 2018-ig.
  2. Állítsa be a napi munkaórák számát a következő mezőben. Alapértelmezés szerint ez a mező már 8 órára van beállítva (40 órás munkahét), de ez a szám módosítható.
  3. A képernyő jobb oldalán a banneren látható az eredmény: munkanapok, naptári napok és munkaidő a megadott dátumok között. Az eredményeket másolni kell, és el kell menteni a dokumentumba.

Mire használhatod a számológépet?

  1. A szerződések szerinti kötbér és késedelem kiszámítása
  2. Hogyan lehet megérteni egy erőforrás felhasználásának hatékonyságát és a felhasználás határidejét
  3. Hogyan ne ütemezzünk véletlenül egy feladatot egy hétvégére
  4. Mennyi idő van még hátra a határidőig

Példa:

Ön könyvelő. Az ügyvezető arra kérte Önt, hogy a következő percekben adjon meg adatokat arról, hogy a cég összes dolgozója hány munkaórát dolgozzon februárban. Könnyen meghatározhatja az alkalmazottak számát – számok vannak a szeme előtt. De számolni kell az órák számát.... És hány nap van februárban? Mi a helyzet egy szökőévvel? Milyen napok voltak a szabadnapok? És hogyan lehet meghatározni az ünnepnapok számát?

Megoldás: csak használja a widgetünket. Minden információt automatikusan megkap, nincs szüksége asztali naptárra és számológépre.

Tetszett ez a számológép? Ezután próbálja ki további funkcióinkat

Szeretne könyvelést vezetni, jelentéseket küldeni és számításokat végezni egy kényelmes és egyszerű webszolgáltatásban? Próbálja ki a Kontur.Accounting szolgáltatást 14 napig ingyen! Gyorsan megtanítjuk a szolgáltatás használatára, és válaszolunk minden kérdésére!

jegyzet: ez a bejegyzés a cmcenroe.me/2014/12/05/days-in-month-formula.html cikk fordítása I. rész), valamint a szerző hozzáfűzése ( rész II). Nem szabad komolyan venni az anyagot, inkább az elme bemelegítését szolgálja, amihez nem kell más, mint iskolai számtantudás, és nincs gyakorlati alkalmazása. Jó olvasást mindenkinek!

I. rész

Bevezetés

Nemrég, egy újabb álmatlan éjszaka után, olyan módszereken gondolkodtam, amelyek segítségével megjegyezhetem a napok számát az év minden hónapjában. Erre van számláló is, ahogy a csülökre is lehet számolni, de nekem se egyik, se másik nem jött be. Azon tűnődtem, létezik-e valamilyen matematikai képlet egy ilyen probléma megoldására, és - nem találtam egyet egy felületes tanulmányozás során - kihívást jelentett számomra, hogy készítsek egyet.

Formalizálás Más szóval meg kell találni a függvényt f, hogy az érték f(x) minden hónapra x, amelyet 1 és 12 közötti szám képvisel, megegyezik az adott hónapban lévő napok számával. Az argumentum- és függvényértékek táblázata:

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

Ha kedvet kaptál ahhoz, hogy kipróbáld magad, mielőtt elolvasnád a megoldásomat, itt az ideje. Ha szeretné azonnal látni a kész választ, akkor nézzen a spoiler alá.

Válasz


Az alábbiakban bemutatom a lépéseimet a megoldás megtalálásához.

Matematikai berendezés

Először is, röviden frissítsük fel a memóriánkat két létfontosságú operátorról a probléma megoldásában: az egész számok osztásáról és az osztás maradékáról.

Egész osztás egy operátor, amelyet sok programozási nyelvben használnak két egész szám felosztására és a hányadosból való elvetésre törtrész. úgy fogom ábrázolni, mint . Például:

A hadosztály maradéka egy operátor, amely megkeresi az osztás maradékát. Sok programozási nyelv használja a szimbólumot % , de a formátumú konstrukciókat fogom használni, például:

Megjegyzem, hogy az osztály fennmaradó része ugyanolyan prioritást élvez, mint az osztály.

Alapok

Tehát a matematikai apparátusunkat alkalmazzuk az alapképlet megszerzéséhez. Egy normál hónapnak 30 vagy 31 napja van, tehát használhatunk 1-et vagy 0-t felváltva, majd csak hozzáadhatunk egy állandót ehhez a számhoz:

Kapunk egy táblázatot, a helyes értékek félkövérrel vannak kiemelve:
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

Nem rossz kezdés! Már vannak helyes értékek januárra és a márciustól júliusig terjedő hónapokra. A február egy speciális eset, ezzel egy kicsit később foglalkozunk. Július után a hátralévő hónapokban a 0 és az 1 megszerzésének sorrendjét fel kell fordítani.
Ehhez hozzáadhatunk 1-et az osztalékhoz:

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

Most augusztustól decemberig érvényesek a helyes értékek, de ahogy az várható volt, a többi hónap értéke hibás. Nézzük meg, hogyan kombinálhatjuk ezeket a képleteket.

Maszk alkalmazása

Ehhez darabonkénti függvény kell, de - mivel nekem unalmasnak tűnt - más megoldáson is gondolkodtam, hogy a függvény egyik részét használom az egyik intervallumon, a másikat a másikon.
Azt hiszem, a legegyszerűbb módja egy olyan kifejezés megtalálása, amely az egyik alkalmazásban 1, a többiben pedig 0. Azt a módszert, amelyben egy argumentumot egy kifejezéssel megszorozva kizárjuk a képletből a hatókörén kívül, "maszkolásnak" neveztem el, mert ez a viselkedés egyfajta bitmaszkhoz hasonlít.
Ennek a módszernek a használatához függvényünk utolsó részében egy 1-gyel egyenlő kifejezést kell találnunk és - mivel az argumentumértékek mindig kisebbek 16-nál - erre megfelelő az egész szám 8-cal való osztása.
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

Most ennek a maszknak a segítségével, egy kifejezést használva az osztalékban 1 helyett, megfordíthatjuk a képletben a 0 és az 1 sorrendjét:

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! Minden rendben van, kivéve februárt. Meglepetés meglepetés.

február

Bármely hónapban van 30 vagy 31 nap, kivéve a februárt, ahol a 28 nap (a szökőév nem alkalmas erre a feladatra). Jelenleg a képletünk szerint 30 napja van, ezért jó lenne a 2-vel egyenlő kifejezést kivonni -val.
A legjobb, amit kitaláltam, ez, amely február után minden hónapban maszkos:
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

Ha az alapállandót 28-ra változtatjuk, 2-t hozzáadva a többi hónaphoz, a következő képletet kapjuk:

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

Sajnos a január most 2 nappal rövidebb. De szerencsére nagyon könnyű olyan kifejezést kapni, amely csak az első hónapra vonatkozik: ez a szám lefelé kerekített reciprokja. Ha megszorozzuk 2-vel, megkapjuk a végső képletet:

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

Utószó

Itt van - egy képlet a napok számának megszerzésére az év bármely hónapjában, a legegyszerűbb aritmetika segítségével. Ha legközelebb eszébe jut, hány nap van szeptemberben, csak tegye ezt a JavaScript egysoros verziójával:

f(x) függvény ( visszatérés 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )

rész II

Bevezetés

Az első részben egy rövid, sőt kissé elegáns képletet kaptunk, melynek fő előnye a matematikai apparátus egyszerűsége, az elágazó és feltételes kifejezések hiánya, valamint a tömörség. A hátrányok közé tartozik – azon túl, hogy nem fogja használni a projektjében – a szökőévek és nem szökőévek ellenőrzésének hiánya.
Így egy függvény létrehozását tűztem ki magam elé f, hogy az érték f(x, y) minden hónapra x, amelyet egy 1-től 12-ig terjedő szám és egy év képvisel y 0-nál nagyobb a hónap napjainak számával egyenlő xévente y.
Aki türelmetlen, annak kész válasz van a spoiler alatt, de a többiért kövessetek.

Válasz

A divízió maradéka: modés ⌊⌋

A vizuális áttekinthetőség érdekében egyetértünk abban, hogy egyes képletekben a maradékot tartalmazó osztás operátort alsó zárójelek helyettesítik, ahol szükségesnek tűnt:

Szökőév

Szökőévben egy extra napot vezetnek be: február 29. Mint tudják, a szökőév olyan év, amely 4-nek többszöröse, és nem 100-nak vagy 400-nak többszöröse. Írjunk egy kifejezést, amely megegyezik ezzel az állítással:

Ahhoz, hogy ezt a kifejezést algebraivá alakíthassuk, a kifejezés eredményére a forma injekcióját kell alkalmazni:

Ez lehetővé teszi, hogy 1-et kapjon, ha maradék nélkül oszt, és 0-t, ha maradékkal osztja, annak érdekében, hogy felhasználja a hónap napjainak meghatározására szolgáló képletben.

Jellemzőként g" 1 mínusz a maradék a következőkre használható fel:

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

Könnyen belátható, hogy az osztalékot és az osztót 1-gyel növelve a megfelelő képletet kapjuk:
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

Így a kifejezést így írjuk:


Írjuk a kifejezést így:

Ezt a megközelítést alkalmazva azt kapjuk következő funkció g(y), ami 1 lesz, ha az év szökőév, vagy 0 egyébként:

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

A szökőévek félkövérrel vannak kiemelve.

Emlékeztetlek arra, hogy az elfogadott megállapodás keretein belül a felosztásból származó maradék megszerzésének operátora úgy ábrázolható, mint mod, és ⌊⌋.

Maszk alkalmazása

A képletben az a rész egy korrekció, amely 2 napot ad januárhoz. Ha eltávolítjuk a 2-es tényezőt, és a számlálót 1-ről 2-re változtatjuk, akkor ez a képlet 2 napot ad januárhoz és 1 napot februárhoz, ami megadja a kulcsot egy szökőévhez egy nap hozzáadásához. Az érthetőség kedvéért a képletben köztes értéket használunk g(y)és mint y 2000 (szökőév) és 2001 (nem szökőév) felhasználásával:

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

A nem szökőév januárját kivéve az összes hónap értéke helyes.

Ennek a sajnálatos félreértésnek a kijavításához adjunk hozzá 1 napot januárhoz a már ismert képlet szerint:


Vagy:

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

Következtetés

Ennek eredményeként egy sokkal körülményesebb, de univerzálisabb képletet kaptunk, amellyel egy adott év egy hónapjában a napok száma is kiszámítható:

f(x, y) függvény ( visszatérés 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# példa ideone.com/fANutz .

1 . Nem tudom, hogyan kell ilyen emlékeztetőt használni, ezért kémkedtem egy jelet az interneten.
2 . „Alapok” vagy „Szabály sok kivétellel”, mint a legtöbb szabály.
3 . Kezdetben a római naptárban február volt az év utolsó hónapja, tehát van logika abban, hogy rövidebb, mint az összes többi. Abban is van logika, hogy egy napot pontosan az év végén adunk hozzá vagy távolítunk el, tehát a hossza változó.

Upd. egy:
Az első rész alternatív fordítása in

A dátumkalkulátor célja a dátumok közötti napok számának kiszámítása, valamint a dátum megtalálása úgy, hogy egy ismert dátumhoz hozzáad vagy kivon bizonyos számú napot.

Napok hozzáadása egy dátumhoz

Használja ezt a lehetőséget, hogy megtudja, melyik dátum lesz egy bizonyos számú napon belül. Adja meg a kezdési dátumot és a hozzáadandó napok számát. A kivonáshoz használja a mínusz értéket. A kalkulátorban lehetőség van csak munkanapok hozzáadására is.

A dátumok közötti napok számának kiszámítása

Ez a számítási módszer válaszol a "hány nap telt el a dátum óta" kérdésre. Adja meg a kezdési és befejezési dátumot, majd kattintson a „Kiszámítás” gombra. A számológép megmutatja, hány nap telik el a megadott dátumok között. A kalkulátor külön-külön mutatja a munkanapok számát.

Ezzel az opcióval kiszámíthatja, hogy hány nap van hátra egy bizonyos eseményig, például születésnapig vagy ünnepnapig. Ehhez írja be a mai dátumot a kezdő dátum mezőbe, és az esemény dátumát a befejező dátum mezőbe.

Ünnepek

A számológép képes kiszámítani, összeadni és kivonni a naptári és munkanapokat egyaránt. A hivatalos munkaszüneti napok a következők:

  • Január 1,2,3,4,5,6,8 - Újévi ünnepek
  • Január 7. – Ortodox karácsony
  • Február 23. - A haza védelmezőjének napja
  • Március 8. – Nemzetközi Nőnap
  • Május 1. - A tavasz és a munka ünnepe
  • Május 9. – a győzelem napja
  • Június 12. - Oroszország napja
  • November 4. – a nemzeti összetartozás napja

Ha egy munkaszüneti nap szombatra vagy vasárnapra esik, az átkerül a következő munkanapra. De néha a hétvége teljesen más helyre kerül a naptárban. Például az újévi ünnepekre eső szombatok és vasárnapok májusra helyezhetők át a májusi ünnepek meghosszabbítása érdekében.

A napszámításkor a kalkulátor a hivatalos ünnepnapokat és az összes átutalást is figyelembe veszi.

Nemrég, hosszú alvás nélkül eltöltött idő után azon gondolkodtam, hogyan lehet megtudni, hány nap van egy hónapban, annak ismeretében. Vannak mondókák ebben a témában, van mód csont szerint számolni, de ezek a módszerek nekem nem jönnek be - vágtam bele egy matematikai képlet keresésébe, amire egy idő után levezettem.

Tehát a feladat

Formálisan Más szóval, egy f (x) függvényt kell kapnunk, amely a következő értéklistát adná (amelyet egyébként valahol az interneten találtam, és nem emlékező szabályokkal vezettem le):

Megjegyzendő, hogy érvként csak a hónap számát kapjuk, i.e. nem vesszük figyelembe a szökőéveket, ill f(2) = 28.

Ha szeretné tudni, milyen eredményt kaptam, görgessen az oldal aljára. Az alábbiakban a kívánt képlet származtatása lesz leírva.

Mit fogunk használni

Az összeadáson, kivonáson és szorzáson kívül két műveletet fogok használni: az egész osztást és a maradék felvételének műveletét. Hadd emlékeztesselek, mi az:

  • Egész osztás, vagy "lefelé osztás". Számomra normál felosztásként jelenik meg: a / b - jelentése ⌊a / b⌋ . Például 5/3 = 1 .
  • A maradék modult figyelembe véve. Az osztást hagyományosan maradékkal jelölöm: a % b \u003d a - (a / b) * b. Például 5 % 3 = 2 .

Ugyanaz a prioritásuk, és asszociatívak maradnak.

Alapok, vagy egy szabály sok kivétellel

Próbáljunk meg olyan mintát találni, amely az érvelés minél több értékét kielégíti. Általában a napok száma egy hónapban 30 és 31 között ingadozik. Ugyanakkor észrevehető, hogy ez a szám függ a hónap egyenletességétől – ami azt jelenti, hogy a maradék modulo 2 műveletet fogjuk használni. hogy valami ilyesminek kell lennie:

f1(x) = 30 + x%2


Jó kezdés! A februárt figyelmen kívül hagyva, aminek nyilván trükközni kell majd, örülni fogunk, hogy az első félévre sikerült beállítani a funkciót. És akkor augusztustól a paritást az ellenkezőjére kell változtatni. Ezt cserével lehet megtenni x%2 a képlet első változatában (x+1)%2:

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


A várakozásoknak megfelelően az év első fele most kikerült a helyes értékek tartományából, de az augusztustól decemberig tartó hónapok megadták, amire szükségünk volt. Találjuk meg a módját ennek a két résznek a kombinálására.

Maszk

Az osztalék +1-ére csak akkor van szükségünk, hogy "aktiváljon", ha az argumentum eléri a 8-nál nagyobb értéket, azaz. fel kell alkalmaznunk valami maszkot. Ugyanakkor az argumentum értéke nem haladhatja meg a 12-t. Tehát az argumentum 8-cal való egész osztása ideális számunkra:


Pont olyan, amilyenre szükségünk van. Használjuk ezt a kimenetet:

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


Azta! Minden rendben van, kivéve februárt. Milyen váratlan.

február

Minden hónapnak van 30 vagy 31 napja, de a februárnak 28 (hadd emlékeztessem önöket, hogy nem tekintünk szökőéveknek).

Történeti hivatkozás: a római naptárban a február volt az év utolsó hónapja – értsétek el, hogy a szökőévekben egy napot hozzáadva a naptár végéhez intuitívabb. Használjuk azonban a Gergely-naptárt, amelyben a legrövidebb hónapot az egyik bölcs uralkodó parancsára közelebb helyezik a kezdethez.

Ban,-ben legújabb verzió februári képletünk 30 napot kapott. És ezért el kell szakítanunk tőle pár napot. Ezt természetesen más hónapok is megsínylik: vagy februártól balra, vagy attól jobbra a listánkban - a jobb oldalon viszont sokkal kevesebb hónap van, így a januárt fel kell áldoznunk, majd módosítani kell a képlet arra. A kifejezéssel levághatja a napokat az első és a második hónapban 2% x.