Jump to content
  • 0

rekenen met tijd


Bruno

Question

Ik heb een tof bestandje dat iedereen goed kan gebruiken.

Het bestand geeft een tabel met de landcode, de landnaam, telefoonprefix, vlag en uurverschil weer.

Met dit uurverschil wil ik de tijd in het land berekenen in het veld Time.

 

Al deze gegevens kan je goed gebruiken in een klantenbestand.

Wanneer je bvb. een Griekse klant ingeeft dan kan je via een relatie of script al de bovenstaande gegevens tevoorschijn toveren.

 

Enkel met de formule van het veld "Time" is iets mis.

 

Misschien kan iemand dit verbeteren. Het gaat goed totdat je rond middernacht komt.

landcodes.rar

Link to comment

8 answers to this question

Recommended Posts

  • 0

OK, laten we de formule eens bekijken:

Time(
Case(Hour(Get(CurrentTime))+( HourDifference)>24;Hour(Get(CurrentTime))+( HourDifference)-24;Hour(Get(CurrentTime))+( HourDifference));
Minute(Get(CurrentTime));
Seconds(Get(CurrentTime))
)

Da's wel leuk, maar niet erg leesbaar. Probeer eens je code zo te formatteren:

Time (
Case ( 
	Hour (Get ( CurrentTime ) ) + ( HourDifference ) > 24 ;
		Hour ( Get( CurrentTime ) ) + ( HourDifference ) - 24 ; 
	Hour ( Get ( CurrentTime ) ) + ( HourDifference ) 
) ;
Minute ( Get ( CurrentTime ) ) ;
Seconds ( Get( CurrentTime ) )
)

Vervolgens gaan we een beetje vereenvoudigen, dat kunnen we vanaf versie 7:

Let (
[
deLocaleTijd = Get ( CurrentTime ) ;
hetLocaleUur = Hour ( deLocaleTijd ) ;
hetUur = hetLocaleUur + CountryCodes::HourDifference
] ;
Time (
	Case ( 
		hetUur > 24 ;
			hetUur - 24 ; 
			hetUur
		) ;
	Minute ( deLocaleTijd ) ;
	Seconds ( deLocaleTijd )
)
)

Je zegt dat het fout gaat rond middernacht. Ik zie nu duidelijk waarom: 24 uur is nog steeds goed, en da kan ni.

Let (
[
deLocaleTijd = Get ( CurrentTime ) ;
hetLocaleUur = Hour ( deLocaleTijd ) ;
hetUur = hetLocaleUur + CountryCodes::HourDifference
] ;
Time (
	Case ( 
		hetUur > 23 ;
			hetUur - 24 ; 
			hetUur
		) ;
	Minute ( deLocaleTijd ) ;
	Seconds ( deLocaleTijd )
)
)

Link to comment
  • 0

Inderdaad. Onze Clarify Smurf weet waarom. We zitten volop in de pruimentijd, en de enige reden waarom ik zoveel aanwezig ben is omdat ik een job heb voor een klant die... in bouwverlof is, dus ik zit heel de dag thuis te werken, en heb af en toe wat afleiding nodig.

 

Inderdaad mooi werk Bruno, we zouden meer van die filetjes moeten hebben. Kijk, ik zal het goedmaken... zal een paar keer op "download" klikken. Voila :P

Link to comment
  • 0

Bij bovenstaande formule ging toch nog iets mis en dit kwam door het volgende:

Als hetUur>23 dan worden er 24 afgetrokken.

Om 23:54 (Afghanistan) kreeg ik dus -0:06 want 23:54 - 24 = -0:06.

Er moet dus rekening gehouden worden met dePlaatselijkeTijd. Als die >23:59:59 dan mogen er 24 afgetrokken worden.

 

Moraal van het verhaal: Die Let-functie is onontbeerlijk bij moeilijke berekeningen. Het brengt het redeneren terug naar mensentaal.

 

Nu ik weet dat het bouwverlof is, zal ik de volgende dagen nog wat eten op het forum plaatsen.

 

 

 

Let (

[

deLocaleTijd = Get ( CurrentTime ) ;

hetLocaleUur = Hour ( deLocaleTijd ) ;

hetUur = hetLocaleUur + CountryCodes_HourDifference ;

dePlaatselijkeTijd=Time(hetUur;Minute ( deLocaleTijd ) ;Seconds ( deLocaleTijd ) )

] ;

Time (

Case (

dePlaatselijkeTijd > Time(23;59;59) ;

hetUur - 24 ;

hetUur

) ;

Minute ( deLocaleTijd ) ;

Seconds ( deLocaleTijd )

)

)

Link to comment
  • 0

Er zat nog een fout in. Dit zou het moeten zijn.

Ik heb nu reeds 15 uur en 57seconden nagekeken.

Nog een kleine 8 te gaan :D

 

Let (

[

deLocaleTijd = Get ( CurrentTime ) ;

hetLocaleUur = Hour ( deLocaleTijd ) ;

hetUur = hetLocaleUur + CountryCodes_HourDifference ;

dePlaatselijkeTijd=Time(hetUur;Minute ( deLocaleTijd ) ;Seconds ( deLocaleTijd ) )

] ;

Time (

Case (

dePlaatselijkeTijd > Time(23;59;59) ;

hetUur - 24 ;

 

dePlaatselijkeTijd < Time(0;0;0) ;

hetUur + 24 ;

 

hetUur

) ;

Minute ( deLocaleTijd ) ;

Seconds ( deLocaleTijd )

)

)

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...