Dator > hur man beräknar den dagen i veckan för varje år

  • hur man beräknar den dagen i veckan för varje år


  • En vanlig algoritm för beräkning av dagen i veckan i ett särskilt datum är Zeller algoritm . Algoritmen publicerades 1882 och syftar till att bearbetas för hand , men kan enkelt implementeras i programvara . Zeller algoritm fungerar genom att hitta veckodag seklet började , sedan bygga därifrån genom att lägga till år , månader och dagar . En god förståelse av modulo aritmetik är nödvändigt att förstå hur algoritmen fungerar, men vem som helst kan genomföra det genom att följa instruktionerna
    1 .
    Förbered ingångar . Algoritmen förväntar sig en dag, månad och år .

    Zeller algoritm nummer månaderna från tre till 14 , med början i mars och slutar med februari . Detta garanterar att språng dagar infaller alltid i slutet av året , vilket förenklar beräkningarna .

    om månad <3 sedan , månad=månad + 12
    2 .

    Beräkna talet och år av århundradet . Det talet för 1950 bör vara 19 , även om den faller i det tjugonde århundradet .

    talet=golv (år /100 )
    yearOfCentury=år mod 100
    3 .
    Hitta dag i veckan som talet inleddes .

    dayOfWeek=golv ( talet /4 ) + 5 * talet

    Zeller fastställt att denna beräkning modulo sju, kommer att ge veckodag att varje talet inleddes . Golvet Beräkningen hanterar det faktum att var fjärde århundradet är kort en skottdagen .
    4 .
    Beräkna veckodag att året startade den.

    dayOfWeek=dayOfWeek + yearOfCentury + golv ( yearOfCentury /4 )

    Varje år börjar nästa dag i veckan än föregående år , med undantag för skottår . Denna beräkning , modulo sju, ger veckodag den första dagen på året .
    5 .
    Hitta dag i veckan att månaden började på .

    dayOfWeek=dayOfWeek + golv ( ( månad + 1 ) * 26 ) /10 )

    Detta är hjärtat av Zeller algoritm . Zeller konstaterade att denna beräkning kan avgöra på vilken dag i veckan en månad startar . Det eliminerar behovet av uppslagstabeller för att fastställa längden på varje månad .
    6 .
    Tillsätt dagen i månaden och beräkna dagen i veckan då det infaller .

    dayOfWeek=dayOfWeek + dag
    dayOfWeek=dayOfWeek mod 7
    7 .
    Omvandla datum till ISO- standarder vecka datum .

    ISO vecka datum dag-för-veckor börjar med måndag=1 . Zeller algoritm använder Lördag=0 . Omvandlingen använder enkla modulo aritmetik .

    dayOfWeek=( ( dayOfWeek + 5 ) mod 7 ) + 1
     

    tips och varningar


     

    • Denna algoritm fungerar bara för gregorianska datum . För äldre datum , kommer en annan beräkning behövas .
    2 3 4 5 6


Previous:nothing Next:hur man vända en enda länkad lista





Relaterade artiklar


  • Hur konvertera tal till text i Visual Basic
  • hur man lär sig Visual Basic 2005
  • handledning om hur man programmerar en sql
  • hur man skapar ett formulär listruta för datum kreditkort med xhtml
  • hur du lägger till ett formulär i PHP
  • hur du ändrar källan till en Excel- pivottabell med VBA
  • hur man använder MessageBox i MDI applikationer
  • Hur konvertera HTML till texten i C #
  • Hur man laddar ner och installera Java på vår dator
  • hur man gör med ett objekt i Visual Basic 6