24. juli 2000 - 01:55Der er
4 kommentarer og 1 løsning
tid og dato
Hej! Jeg vil gerne kunne indtaste et tidspunkt og en dato i hhv. to editboxe. Formatet skal for tidspunkt være tt:mm og for dato være ddmmåå. Hvordan gemmer jeg nu de to informationer i en TDateTime, og hvordan henter jeg dem ud igen ? TDateTime indeholder jo både tid og dato.
Datoen ligger i heltals delen og tiden ligger i decimal delen (en TDateTime er blot et \"Floating Point\" tal). Nedenstående eksempel \"går over åen efter vand\" for at tælle dagen en op, men viser således hvordan du trækker dato og tid ud af en TDateTime, og hvordan du sætter dem tilbage.
For at splitte datoen op i Dag, Månd År og tiden i Timer, Minutter Sekunder (og millisekunder) bruger du henholdvis: DecodeDate, EncodeDate, DecodeTime, EncodeTime
Det er jo pænt af pellelil at give sådan et eksempel, men som jo vist ikke helt svarer på det du spørger om:
Indholdet af en tdatetime er ganske rigtigt som pellelil siger en float (real) hvor heltalsdelen er antallet af dage siden 30-12-1899 og decimal delen er tidspunktet.
Præsentationen af datoen (og tiden) fra en tdatetime er afhængig af de regionale indstillinger under windows, d.v.s. der hvor du angiver dato og tidsformaterne.
Du kan med fordel sætte en variabel der hedder \"shortdateformat\" til dd-mm-åå (shortdateformat := \'dd-mm-yy\' i starten af dit program, så vil det virke med det datoformat, uanset hvad brugeren har sat op under windows. (Jeg ville i øvrigt i det herrens år 2000 sætte formatet til dd-mm-yyyy for at vise årstallet med 4 cifre, men det er jo smag og behag)
Tegnene mellem dato, måned og år kaldes for \"DateSeparator\" og mellem timer, minutter og sekunder for \"TimeSeparator\". Disse to er konstanter Delphi kender og som det får fra indstillingerne under regionale.
Det er derfor vigtigt at din dato har samme format som indstillingerne i regionale (eller hvis du selv har sat shortdateformat i starten af programmet).
For at pakke en datetime ud til tekst kan du bruge funktionerne: DateTimeToStr(Tdatetime), DateToStr(Tdatetime) og TimeToStr(Tdatetime).
og omvendt kan du bruge StrToDateTime(string), StrToDate(string) og StrToTime(string).
Ud fra dette, og fra dit spm, ville jeg gøre sådan:
dette er dine variable: var datotid : tdatetime; dato, tid : string;
Når du vil sætte datotid lig med indtastede dato og tid gør du sådan:
Det eneste du skal være opmærksom på er at hvis der er fejl i dine strenge vil StrToDateTime give en fejl, så du skal sikre at hhv. dato og tid strengene er i det rigtige format, og du kan med fordel bruge en Try, Except, End blok rundt om.
og når du vil sætte hhv. dato og tid strengene ud fra din datotid (tdatetime var) gør du sådan:
dato := DateToStr(datotid); tid := TimeToStr(datotid);
Jeg håber det giver dig lidt mere end pellelils svar ;-)
Så vidt jeg kan husker, så indeholdte det oprindelige spørgsmål teksten \"Hvordan gemmer jeg nu de to informationer i en TDateTime, og hvordan henter jeg dem ud igen ? TDateTime indeholder jo både tid og dato\" - på hvilket jeg gav et svar :-)
Tak til jer begge for svarene! Jeg vælger at give sjensen points\'ne fordi den løsning er den mest beskrivende og letteste at gå til.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.