Toon posts:

[delphi] datetime vergelijken

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

Verwijderd

Topicstarter
Ik moet in mijn programmatje mijn tijd van de datetimepicker op mijn formulier vergelijken met de tijd in mijn db. de tijd in mijn db is vb : 0.53 maar die van mijn datetimepicker is 3568.53 , er staat dus nog de datum voor. nu zou die er vanaf moeten. ik heb daarom geprobeerd de waarde van mijn datetimepicker in een extended variabele te plaatsen en dan de functie frac toe te passen maar dan krijg ik als resultaat 0. ook als ik werk met de functie trunc (datetime-(trunc(datetime)))
wat doe ik nou verkeerd??

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 27-05 15:39
Gebruik je de Time property van je DateTimePicker?

hmmm, foutje, kan je niet

code:
1
DateTimePicker1->Time - TDateTime::CurrentDate();


gebruiken?

[ Voor 53% gewijzigd door schoene op 17-12-2003 12:04 ]


  • Thekk
  • Registratie: Augustus 2002
  • Laatst online: 24-05 07:21
Kan je niet beter functie floor gebruiken:
datetime-(floor(datetime))

floor rond af naar het eerstvolgende lagere getal...

Groeten,
Thekk

Ik heb geen zin om een sig te maken.


Verwijderd

Topicstarter
als je bedoelt dat je bij properties "kind = tTime" en het veld in de database is van het type time, dan denk ik van wel ja

Verwijderd

Ik weet niet welke versie je draai, maar indien het 7 is ff op de F1 drukken, dan krijg je (die smiley's komen door het copy/pasten) :
CompareTime function

Indicates the relationship between the time portions of two TDateTime values.

Unit

DateUtils

Category

datetime routines

Delphi syntax:

function CompareTime(const A, B: TDateTime): TValueRelationship;

C++ syntax:

extern PACKAGE Types::TValueRelationship __fastcall CompareTime(const System::TDateTime A, const System::TDateTime B);

Description

Call CompareTime to compare the two TDateTime values specified by A and B. CompareTime returns

LessThanValue if A occurs earlier in the day than B (even if A occurs on a later day than B).
EqualsValue if A occurs at the same time of day as B, ignoring of the date portion of the two values.
GreaterThanValue if A occurs later in the day than B (even if A occurs on an earlier day than B).

[ Voor 5% gewijzigd door Verwijderd op 17-12-2003 12:08 ]


Verwijderd

Topicstarter
maui71 , ik draai de 6, maar daar is evengoed een helpfunctie in. dat is ook het eerste wat ik gedaan heb, maar daar zit nu juist het probleem, het ene veld bevat een datum en uur (als getal weergegeven) en het opgeslagen veld in de db enkel het uur (ook weer als een kommagetal weergegeven).
ik zou enkel de getallen na de komma moeten kunne vergelijken, eigenlijk iets heel simpel, maar ik krijg het maar niet voor mekaar.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je kan eens kijken naar de DecodeTime functie. Daarmee kan je je tijd dus gaan opsplitsen in uren, minuten, etc....

https://fgheysels.github.io/


Verwijderd

Topicstarter
dat heb ik ook al geprobeerd maar daar ben ik ook nie zo veel mee. het makkelijkste is dat ik het kommagetal van mijn datetimepicker in een variabele kan krijgen, maar dat lukt me dus niet, er komt telkens 0 in te staan, ik heb volgende formaten al geprobeerd : extended, double, integer

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 27-05 15:39
zoals ik al zei:

C++:
1
DateTimePicker1->Time - TDateTime::CurrentDate();


Dit heeft je enkel het deel na de komma

edit: ik toon dit hier in C++ code (voor Builder), je zal het nog enigzins moeten vertalen

[ Voor 28% gewijzigd door schoene op 17-12-2003 12:21 ]


Verwijderd

Topicstarter
ik word zot! als ik de waarde van de datetimepicker min de datum doe, dan krijg ik bij mijn datum van nu "inaccesable" te staan. :s

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Trunc geeft je het deel voor de comma en Frac het deel achter de comma. Frac(Now) geeft je dus alleen de huidige tijd. Tijdens zou ik niet vergelijken met =, want door afrondinsfouten kunnen twee verschillende getallen achter de komma best dezelfde tijd aanwijzen. Daarom is ook de CompareTime en SameTime functies gebruiken. Voor CompareTime hoef je niet eens het datumdeel te verwijderen, want zoals de functienaam al verteld wordt alleen de tijd vergeleken.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Verwijderd schreef op 17 december 2003 @ 12:12:
maui71 , ik draai de 6, maar daar is evengoed een helpfunctie in. dat is ook het eerste wat ik gedaan heb, maar daar zit nu juist het probleem, het ene veld bevat een datum en uur (als getal weergegeven) en het opgeslagen veld in de db enkel het uur (ook weer als een kommagetal weergegeven).
ik zou enkel de getallen na de komma moeten kunne vergelijken, eigenlijk iets heel simpel, maar ik krijg het maar niet voor mekaar.
CompareTime function

Indicates the relationship between the time portions of two TDateTime values. :) :)


:) IK zie hetzelfde draadje (90% gelijk) op een ander forum :)

[ Voor 6% gewijzigd door Verwijderd op 17-12-2003 15:30 ]


Verwijderd

Het tijd gedeeltje van een TDateTime kun geloof ik ook krijgen met de TimeOf(datetime) functie, dus dan haalt hij het gedeeltje voor de komma er af.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 27-05 15:56

Tomatoman

Fulltime prutser

TDateTime is eigenlijk een Float. Het integere gedeelte van het getal (voor de komma) is de datum, het gedeelte achter de komma is de tijd. 0,0 is 0:00 uur; 0,75 is 18:00 uur; enzovoort.

Een goede grap mag vrienden kosten.


Verwijderd

tomatoman schreef op 18 december 2003 @ 13:24:
TDateTime is eigenlijk een Float. Het integere gedeelte van het getal (voor de komma) is de datum, het gedeelte achter de komma is de tijd. 0,0 is 0:00 uur; 0,75 is 18:00 uur; enzovoort.
Ik dacht iedere 1/86400e achter de komma is 1 seconde om precies te zijn.
Pagina: 1