Jump to content
  • 0

rekenen met tijd


Bruno

Question

Posted

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

8 answers to this question

Recommended Posts

  • 0
Posted

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 )
)
)

  • 0
Posted

Inderdaad, je hebt gelijk .

Het duurt allemaal wat langer om met die let-functie alles te verklaren maar het maakt het detecteren van fouten wel een stuk eenvoudiger.

 

Merci. Proper werk.

 

6 keer gedownload...gene vette.

  • 0
Posted

Bruno,

 

Mooi werkstuk hoor en het is zomer hé ... daarom is de downloadwoede bij de meerderheid der bevolking niet zo groot :wink:

 

Doe daar nog eens het advies van Peter bij en het is om het op z'n 'Walliaans' te zeggen in één woord ... Geweldig :!::D

 

Danny

  • 0
Posted

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

  • 0
Posted

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 )

)

)

  • 0
Posted

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 )

)

)

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

 

Mooi zo Bruno,

 

de hongerigen spijzen is een werk van barmhartigheid :wink:

 

Hungry Danny (wanneer men tracht met roken te stoppen, heeft men altijd trek :evil: )

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...