Hoe het jaartal bepalen?

Pagina: 1
Acties:
  • 196 views sinds 30-01-2008
  • Reageer

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 14:53
Mijn probleem heeft niet met een specifieke programmeertaal te maken.
Ik lees gegevens uit, uit een timer-IC dat met mijn parallelle poort verbonden is, dat doe ik met een zelfgeschreven proggie in C++.
Ik kan uit dat IC onder andere de dag halen (bv. 27), de hoeveelste dag van de week dit is (0 t.e.m. 6), welke maand (bv. 12) en of het een schrikkeljaar is of het hoeveelste jaar na dat schrikkeljaar.
Mijn vraag is nu, kan ik hieruit een jaartal bepalen? Ja, ik weet het, er moeten verschillende jaartallen mogelijk zijn, maar zou dit niet lukken door bijvoorbeeld te zeggen dat het jaar tussen 2000 en 2500 moet liggen en dan één of andere berekening uit te voeren??
Ik weet dat er bijvoorbeeld iets bestaat om uit maand, jaar en dag (bv. 09/01/1980) te bepalen welke dag van de week het is (woensdag), nu zou ik dus iets omgekeerd willen doen, maar hoe??
Alvast bedankt!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Euj.. volgens mij valt iedere 1e januari eens in de 7 jaar weer op dezelfde dag. Dus als je weet dat je dag 1 maand 1 hebt en het is woensdag, dan is je jaartal 7*x (hierbij houd ik even geen rekening met schrikkeljaren.

Van datum naar dag kan dus, maar andersom is het niet eenduidig te bepalen welk jaar je moet hebben.

Misschien kan je erachter komen als je moeilijke dingen gaat doen met informatie over het zoveelste jaar na een schrikkeljaar, maar dat kan ik me slecht voorstellen.

Siditamentis astuentis pactum.


  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 14:53
Op donderdag 27 december 2001 18:37 schreef Varienaja het volgende:
Euj.. volgens mij valt iedere 1e januari eens in de 7 jaar weer op dezelfde dag.
Dat klopt niet hoor... Vergeet de schrikkeljaren niet!
Waarschijnlijk probeer ik hier iets onmogelijks te doen...
Een andere oplossing was het jaartal opslaan in het vrije RAM geheugen van de timer-IC. Nadeel hier is dat het jaar niet automatisch verhoogd, je slaat dus enkel een bepaalde waarde op in het RAM geheugen. De andere waarden (seconden, minuten, uren, dagen, ...) verhogen wel automatisch.

Verwijderd

Je kunt dit niet berekenen. Meestal zal eens in de 28 jaar zullen deze getallen namelijk hetzelfde zijn.

Hoe kom ik aan 28? Om dezelfde getallen te krijgen moet de dag van de week van een bepaalde datum in een jaar 7 dagen verschoven zijn. Daarnaast kan je ook nog aan het schrikkeljaarnummer een jaar herkennen, dus dat moet je nogeens maal 4 doen.

Daarbij zeg ik wel 'meestal', omdat er nogal wat uitzonderingsregels zijn op de 'schrikkeljaar' regeling. Als een schrikkeljaar op een eeuwgrens valt (zoals 1900), dan vervalt het schikkeljaar, maar een milliniumgrens (zoals 2000) is weer een uitzondering op de uitzondering.

HTH :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 27 december 2001 19:06 schreef MrX het volgende:
Als een schrikkeljaar op een eeuwgrens valt (zoals 1900), dan vervalt het schikkeljaar, maar een milliniumgrens (zoals 2000) is weer een uitzondering op de uitzondering.
dat klopt niet hoor
Bij de eeuwgrens vervalt ie idd, maar de uitzondering op de uitzondering is als het jaar deelbaar is door 400, niet door 1000 :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op donderdag 27 december 2001 19:23 schreef OiSyN het volgende:

[..]

dat klopt niet hoor
Bij de eeuwgrens vervalt ie idd, maar de uitzondering op de uitzondering is als het jaar deelbaar is door 400, niet door 1000 :)
Hmmmmz ... ow ja. |:(

offtopic:
"To err is human", so I might not be adopted from aliens after all ... :+

  • D-Three
  • Registratie: Oktober 2001
  • Laatst online: 14:53
Ik denk dat ik het maar zo ga laten... Zonder jaartal dan.

Toch bedankt hoor!!

[ Voor 14% gewijzigd door D-Three op 29-03-2021 21:10 ]

Pagina: 1