Thread View: be.comp.programming
14 messages
14 total messages
Started by StriKe
Fri, 23 Jun 2006 13:06
Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 23 Jun 2006 13:06
Date: Fri, 23 Jun 2006 13:06
26 lines
1940 bytes
1940 bytes
Ik ben in VB.NET een applicatie aan het schrijven die tijden zou moeten kunnen opslaan die door deelnemers zijn gelopen. Ik had graag geweten wat voor type ik daarvoor het best gebruik in een Access Database en met welke control ik dat veld dan het best 'bestuur' in VB.NET. Voor de database had ik eerst gedacht aan een 'datum/tijd' veld, maar probleem is dan natuurlijk dat tijden > 24 uur wellicht niet mogelijk zijn? Of neem ik dan best gewoon een Langer Integer of zo? En welk control kan ik hier best voor gebruiken? Twee textboxen, respectievelijk voor de uren en minuten van de gelopen tijd? Alvast hartelijk dank voor de tips! Groeten, StriKe -- Groeten, StriKe http://www.internetfreakz.be
Re: Rekenen met tijden in VB.NET
Author: Philip Paeps
Date: Fri, 23 Jun 2006 13:42
Date: Fri, 23 Jun 2006 13:42
26 lines
2093 bytes
2093 bytes
StriKe <strike_usenet@internetfreakz.be.invalid> wrote:
> Ik ben in VB.NET een applicatie aan het schrijven die tijden zou moeten
> kunnen opslaan die door deelnemers zijn gelopen.
>
> Ik had graag geweten wat voor type ik daarvoor het best gebruik
Ik heb gelukkig helemaal niets met Microsoft ``VB.NET'' te maken, maar de
normale manier om met tijd te werken is met een time_t type. Dat is meestal
een uint32_t. Daar hou je offsets sinds een Epoch in bij, doorgaans seconden
sinds 1 januari 1970 00:00:00. Sommige operating systems hebben time_t reeds
in een uint64_t omgezet, zodat applicaties geen last zullen hebben van de
uint32_t overflow in 2038.
Het zou me echter niet verbazen moest Microsoft weer het wiel voor je
uitgevonden hebben zodat je nog makkelijker nog minder portable code kunt
schrijven.
- Philip
--
Philip Paeps Please don't email any replies
philip@paeps.cx I follow the newsgroup.
BRIDGEKEEPER: What is your favorite colour?
GAWAIN: Blue ... No yelloooooww!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
Re: Rekenen met tijden in VB.NET
Author: Wim
Date: Sat, 24 Jun 2006 16:42
Date: Sat, 24 Jun 2006 16:42
31 lines
2229 bytes
2229 bytes
StriKe wrote: > Ik ben in VB.NET een applicatie aan het schrijven die tijden zou > moeten kunnen opslaan die door deelnemers zijn gelopen. > > Ik had graag geweten wat voor type ik daarvoor het best gebruik in een > Access Database en met welke control ik dat veld dan het best > 'bestuur' in VB.NET. > > Voor de database had ik eerst gedacht aan een 'datum/tijd' veld, maar > probleem is dan natuurlijk dat tijden > 24 uur wellicht niet mogelijk > zijn? Klopt. Maar gaan jouw deelnemers meer dan 24u lopen? > Of neem ik dan best gewoon een Langer Integer of zo? Dat is een goede oplossing. In VB.NET neem je een TimeSpan-variabele, en die kan je omzetten in integer of float met de property TotalMilliseconds. > En welk control kan ik hier best voor gebruiken? Twee textboxen, > respectievelijk voor de uren en minuten van de gelopen tijd? Goed idee. Alternatief is ��n enkele tekstbox, met een strikt formaat zoals uu:mm:ss of zo. Zorg ervoor dat je gebruikers zien welk formaat het moet zijn, en controleer of het dat ook is. Omzetten naar TimeSpan kan in dit geval met de Parse-functie. -- Wim
Re: Rekenen met tijden in VB.NET
Author: EN
Date: Sun, 25 Jun 2006 19:31
Date: Sun, 25 Jun 2006 19:31
27 lines
2321 bytes
2321 bytes
"Wim" <wim@nospam.com> wrote in message news:2Ydng.279368$Gz1.48566@blueberry.telenet-ops.be... > StriKe wrote: >> Ik ben in VB.NET een applicatie aan het schrijven die tijden zou >> moeten kunnen opslaan die door deelnemers zijn gelopen. >> >> Ik had graag geweten wat voor type ik daarvoor het best gebruik in een >> Access Database en met welke control ik dat veld dan het best >> 'bestuur' in VB.NET. >> >> Voor de database had ik eerst gedacht aan een 'datum/tijd' veld, maar >> probleem is dan natuurlijk dat tijden > 24 uur wellicht niet mogelijk >> zijn? > > Klopt. Maar gaan jouw deelnemers meer dan 24u lopen? > >> Of neem ik dan best gewoon een Langer Integer of zo? > > Dat is een goede oplossing. > In VB.NET neem je een TimeSpan-variabele, en die kan je omzetten > in integer of float met de property TotalMilliseconds. De TimeSpan en DateTime etc datatype is niet VB.NET maar .NET, dus ook in MC++, of C#, Cobol.Net of PHP.net :) Misschien een beetje mieren**, maar even voor de correctheid.
Re: Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 30 Jun 2006 05:24
Date: Fri, 30 Jun 2006 05:24
35 lines
2609 bytes
2609 bytes
> StriKe wrote: >> Voor de database had ik eerst gedacht aan een 'datum/tijd' veld, maar >> probleem is dan natuurlijk dat tijden > 24 uur wellicht niet mogelijk >> zijn? > > Klopt. Maar gaan jouw deelnemers meer dan 24u lopen? Ik kan me in mijn 'situatie' niet meteen zoiets voorstellen, maar er zijn toch wel situaties waar dat het geval zou kunnen zijn? (En dan niet alleen bij het lopen, maar ook andere situaties). Hoe pak je het dan het best aan, puur uit interesse? >> Of neem ik dan best gewoon een Langer Integer of zo? > > Dat is een goede oplossing. > In VB.NET neem je een TimeSpan-variabele, en die kan je omzetten > in integer of float met de property TotalMilliseconds. > >> En welk control kan ik hier best voor gebruiken? Twee textboxen, >> respectievelijk voor de uren en minuten van de gelopen tijd? > > Goed idee. Alternatief is ��n enkele tekstbox, met een strikt formaat > zoals uu:mm:ss of zo. Zorg ervoor dat je gebruikers zien welk formaat > het moet zijn, en controleer of het dat ook is. > Omzetten naar TimeSpan kan in dit geval met de Parse-functie. Voor de rest hartelijk dank voor je goede raad, ga deze meteen ter harte nemen! -- Groeten, StriKe http://www.internetfreakz.be
Re: Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 30 Jun 2006 05:25
Date: Fri, 30 Jun 2006 05:25
8 lines
1552 bytes
1552 bytes
Hartelijk dank voor je reactie, 'k ga je goede raad meteen ter harte nemen! ;-) -- Groeten, StriKe http://www.internetfreakz.be
Re: Rekenen met tijden in VB.NET
Author: Meindert Sprang
Date: Fri, 30 Jun 2006 05:54
Date: Fri, 30 Jun 2006 05:54
23 lines
2228 bytes
2228 bytes
"StriKe" <strike_usenet@internetfreakz.be.invalid> wrote in message news:mn.f1bc7d66f87e61d6.48459@internetfreakz.be.invalid... > > StriKe wrote: > > >> Voor de database had ik eerst gedacht aan een 'datum/tijd' veld, maar > >> probleem is dan natuurlijk dat tijden > 24 uur wellicht niet mogelijk > >> zijn? > > > > Klopt. Maar gaan jouw deelnemers meer dan 24u lopen? > > Ik kan me in mijn 'situatie' niet meteen zoiets voorstellen, maar er > zijn toch wel situaties waar dat het geval zou kunnen zijn? (En dan > niet alleen bij het lopen, maar ook andere situaties). > Hoe pak je het dan het best aan, puur uit interesse? Nu ken ik VB.Net niet (gelukkig?) maar in Borland C en Pascal, en dus ook in (sommige/alle?) databases die ik daarmee kan benaderen, bestaat een tijdveld uit een float waarde die het aantal dagen voorstelt vanaf een nulpunt. Er zijn functies om de standaard datum/tijdnotatie om te zetten naar dit type (TDateTime) en vice versa. Rekenen met tijd is dus simpel een kwestie van optellen en aftrekken van twee TDateTime waardes. Meindert
Re: Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 30 Jun 2006 05:56
Date: Fri, 30 Jun 2006 05:56
26 lines
2066 bytes
2066 bytes
> Hartelijk dank voor je reactie, 'k ga je goede raad meteen ter harte nemen! > ;-) Meteen al op een probleem gestoten: ik zit met de integer in de database, maar op welke manier kan ik dan 'terug gaan', met andere woorden: uit die integer terug uren, minuten en seconden halen? Ik dacht op deze manier: (tijd is de waarde uit de database) Dim t As Long t = tijd.TotalMilliseconds Dim t2 As TimeSpan t2 = New TimeSpan(t) MsgBox(t2.Hours) In t zit wel degelijk de lange integer uit mijn database. Echter: het aantal uren (dus msgbox(t2.hours)) geeft een waarde 0 terug -- Groeten, StriKe http://www.internetfreakz.be
Re: Rekenen met tijden in VB.NET
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 09:17
Date: Fri, 30 Jun 2006 09:17
19 lines
1879 bytes
1879 bytes
StriKe schreef: > Meteen al op een probleem gestoten: ik zit met de integer in de > database, maar op welke manier kan ik dan 'terug gaan', met andere > woorden: uit die integer terug uren, minuten en seconden halen? Welk tijd-type is die long? Is die in secondes, in millisecondes, in TimeSpan.TicksPerHour? Geef anders eens een waarde van die long, en de tijd die je denkt dat die voorstelt. Dim ts as TimeSpan ts = New TimeSpan(tijd * TimeSpan.TicksPerHour) MsgBox(ts.Hours) -- Affijn, Ruud "Gewoon is een tijger."
Re: Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 30 Jun 2006 12:24
Date: Fri, 30 Jun 2006 12:24
39 lines
2533 bytes
2533 bytes
> StriKe schreef: > >> Meteen al op een probleem gestoten: ik zit met de integer in de >> database, maar op welke manier kan ik dan 'terug gaan', met andere >> woorden: uit die integer terug uren, minuten en seconden halen? > > Welk tijd-type is die long? Is die in secondes, in millisecondes, in > TimeSpan.TicksPerHour? Dim t1 As TimeSpan = New TimeSpan(txtUren.Text, txtMinuten.Text, txtSeconden.Text) Dim t2 As Long = t1.TotalMilliseconds Ik heb de long dus in milliseconden gezet > Geef anders eens een waarde van die long, en de tijd die je denkt dat > die voorstelt. > > Dim ts as TimeSpan > ts = New TimeSpan(tijd * TimeSpan.TicksPerHour) > MsgBox(ts.Hours) MsgBox(t2) Deze geeft de waarde die in de float is opgeslagen weer zoals het hoort Dim ts As New TimeSpan ts = New TimeSpan(t2 * TimeSpan.TicksPerHour) MsgBox(ts.Hours) Hier krijg ik nog steeds 0, terwijl ik een float waarde had van 151310000 had, dat zou meer dan 4 uur moeten zijn -- Groeten, StriKe http://www.internetfreakz.be
Re: Rekenen met tijden in VB.NET
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 14:29
Date: Fri, 30 Jun 2006 14:29
38 lines
2143 bytes
2143 bytes
StriKe schreef: > Dim t1 As TimeSpan = New TimeSpan(txtUren.Text, txtMinuten.Text, > txtSeconden.Text) > > Dim t2 As Long = t1.TotalMilliseconds > > Ik heb de long dus in milliseconden gezet OK. Er zitten 24*60*60*1000=8.64E7 ms in een dag, dus in 32 bits (4.3E9) past dan zo'n 50 jaar. > MsgBox(t2) > > Deze geeft de waarde die in de float is opgeslagen weer zoals het > hoort > > Dim ts As New TimeSpan > ts = New TimeSpan(t2 * TimeSpan.TicksPerHour) > MsgBox(ts.Hours) > > Hier krijg ik nog steeds 0, terwijl ik een float waarde had van > 151310000 had, dat zou meer dan 4 uur moeten zijn Die TicksPerHour zijn niet in milliseconden, maar in 100 nanoseconden. Maar daar moet je niet mee gaan rekenen, dat moet je als 'private' beschouwen. Probeer het zo eens: TimeSpan ts As New TimeSpan(0,0,0,0,t2) MsgBox(ts.Hours) -- Affijn, Ruud "Gewoon is een tijger."
Re: Rekenen met tijden in VB.NET
Author: Ingeborg
Date: Fri, 30 Jun 2006 15:07
Date: Fri, 30 Jun 2006 15:07
7 lines
1222 bytes
1222 bytes
Dr.Ruud wrote: > OK. Er zitten 24*60*60*1000=8.64E7 ms in een dag, dus in 32 bits (4.3E9) > past dan zo'n 50 jaar. > Rekenfoutje, dat moet zo'n 50 /dagen/ zijn
Re: Rekenen met tijden in VB.NET
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 15:30
Date: Fri, 30 Jun 2006 15:30
14 lines
1566 bytes
1566 bytes
Ingeborg schreef: > Dr.Ruud: >> OK. Er zitten 24*60*60*1000=8.64E7 ms in een dag, dus in 32 bits >> (4.3E9) past dan zo'n 50 jaar. > > Rekenfoutje, dat moet zo'n 50 /dagen/ zijn Oeps, ja: wat zij zegt. -- Affijn, Ruud "Gewoon is een tijger."
Re: Rekenen met tijden in VB.NET
Author: StriKe
Date: Fri, 30 Jun 2006 19:18
Date: Fri, 30 Jun 2006 19:18
18 lines
1892 bytes
1892 bytes
<knip> > Die TicksPerHour zijn niet in milliseconden, maar in 100 nanoseconden. > Maar daar moet je niet mee gaan rekenen, dat moet je als 'private' > beschouwen. > > Probeer het zo eens: > > TimeSpan ts As New TimeSpan(0,0,0,0,t2) > MsgBox(ts.Hours) DAt werkt inderdaad wel, bedankt allen voor de talrijke reacies! -- Groeten, StriKe http://www.internetfreakz.be
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads