[c++] datum invoer en datum vergelijking? hoe?

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

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
In een programma wat ik aan het schrijven ben in c++ moet een datum worden ingelezen. Vervolgens moet deze datum vergeleken worden met een andere datum en tevens met de huidige datum. Hierover heb ik een aantal vragen.

1) hoe kan ik de systeem datum en tijd op de juiste manier intergreren in mijn programma?

2) hoe kan de datum het best ingevoerd worden? ik vraag me namelijk af hoe ik dit het best en veiligst kan doen? Dus zonder dat het programma over zijn nek gaat of een geschreven functie niet meer werkt als er bijv een verkeerde invoer wordt gedaan. Een aantal mogelijkheden waardoor het fout zou kunnen gaan is bijv. als dd-mm-yyyy standaard is en je dan gaat invoeren dd-mm-yy of dd/mm/yyyy of dd/mm/yy. Of als je een verkeerde waarde invoerd, bijv 40-40-4434354 om maar iets geks te noemen.

3) hoe kan ik 2 datums vergelijken en kijken of de een groter, kleiner of gelijk is aan de ander.

Thx

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Welk OS? Welke libraries? :?

De meeste OS'en en libraries ondersteunen het unix tijdsysteem, waarbij elke tijd en datum gegeven wordt in secondes vanaf UTC (GMT) 1/1/1970 0:00. Vergelijken van tijden is dan een eitje, het ingeven van een foute tijd onmogelijk. Wat je dan nodig hebt zijn redelijk standaard-functies die van je tijd-integer (wat was daar ook al weer 't woord voor?), een jaar, maand, dag, dagnaam, uur, minuut en seconde geven, en andersom.

In welke range liggen je data? (Data voor 1970 en na 2037 willen nog wel problemen geven in dit tijdsysteem (na 2037 ivm. MAXINT).

Overigens zijn data zonder tijdszone rotdingen...

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
programma moet zoiezo werken onder windows en voor mij zelf ook het liefst onder linux. En wat betreft die libs you name it i paste it >:) (in my program)

Hoe kan het dat je geen verkeerde datum en tijd kan invoeren dan? (gebruiker moet gewoon tijdens het draaien van het programma een willekeurige datum kunnen invoeren. Het systeem moet met deze datum vervolgens bepaalde handelingen verrichten)

o ja en het invoer bereik van de datum... tja het liefst altijd geldig maar tot 2037 is voorlopig wel voldoende :)

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

includes
C (en pre-standaard C++):
#include <time.h>

C++:
#include <ctime>

functions
time_t time(time_t * tp);
returns current time, with tp not NULL also returns time in tp (Dit is dus in secondes vanaf 1970)

char * ctime(const time_t * tp);
This function returns a null-terminated string of the form: Wed Jan 31 01:51:25 2001\n\0

De rest mag je zelf opzoeken... :P

[edit:]Ach, laat ik aardig zijn: :P linkje

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Op vrijdag 11 januari 2002 22:13 schreef Master_Egg het volgende:
Hoe kan het dat je geen verkeerde datum en tijd kan invoeren dan? (gebruiker moet gewoon tijdens het draaien van het programma een willekeurige datum kunnen invoeren. Het systeem moet met deze datum vervolgens bepaalde handelingen verrichten)
Wat ik bedoel is dat elke (unsigned) integer altijd een datum/tijd combinatie oplevert.
Voor checks op 1 <= maand <= 12, 1 <= dag <= 28 of 30 of 31 enzo bestaan wel standaard functies in ctime.h (of time.h).
Als je je code compatible wilt houden zou ik me aan ctime.h houden, al bieden eigen libraries (MFC) vaak meer functionaliteit.

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
het is me nog steeds niet helemaal duidelijk hoe ik de datum nou goed kan invoeren zodat ik 'm kan vergelijken met de systeemtijd.
Wat ik wil is namelijk dat het programma vraagt om een datum in te voeren in de vorm van dd-mm-yyyy (in een keer). Niet om dit als systeemtijd te gaan gebruiken. Maar juist om dit te gaan vergelijken met de systeemtijd en nog andere datums.

(Het is een hotel reserverings-systeem wat een datum voor het begin en einde van de reservering moet weten. Dit om vervolgens te gaan kijken of er kamers vrij zijn op die datum. Ook moet er voor de veiligheid gekeken worden of de invoer later is dan de huidige datum (de systeem tijd) )

En met deze waardes verder werkt. Het enige wat ik dus nodig heb zijn dus de dagen, maanden en jaren. En dit in decimale getallen, dus geen benamingen als jan, feb.... etc.

ps. misschien kan je iets meer details geven. Ben nog een redelijk n00b in C

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
lees svp. ook even de hier bovenstaande post svp. voordat je hier aan begint. thx

wat ik begrijp, is dat je de tijd krijgt in seconden vanaf 1970. Met bepaalde instucties kan je deze tijd omzetten naar een struct met meerdere variabelen. Als je dan nog een andere commando gebruikt wordt deze tijd weer omgezet in een tijd in de vorm van een string bijv.
Als ik nou een datum/ tijd wil invoeren, moet ik dit dan wegschrijven naar de struct? en zoja hoe zet ik de struct dan weer om naar een tijd zoals die in eerste instantie door het systeem wordt aangegeven, in seconden? Kan ik ze dan gewoon vergelijken dus als unsigned long intergers?

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
kick ... sorry >:)

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Luie donder! >:)

Met google zoeken op: 'from string to epoch seconds'

Een beetje zoekwerk kan geen kwaad hoor... :Y)

  • Master_Egg
  • Registratie: November 2000
  • Laatst online: 11-09 16:44

Master_Egg

Schapie schapie schapie!

Topicstarter
Op zaterdag 12 januari 2002 19:26 schreef Poohbear het volgende:
Luie donder! >:)

Met google zoeken op: 'from string to epoch seconds'

Een beetje zoekwerk kan geen kwaad hoor... :Y)
thx man :)

ps. ik heb wel gezocht maar veel documentatie is gewoon te moeilijk voor mij (nog wel >:)) om het makkelijk te kunnen gebruiken en toepassen.
Pagina: 1