🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#620
Author: StriKe
Date: Fri, 23 Jun 2006 13:06
26 lines
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
#621
Author: Philip Paeps
Date: Fri, 23 Jun 2006 13:42
26 lines
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
#622
Author: Wim
Date: Sat, 24 Jun 2006 16:42
31 lines
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
#623
Author: EN
Date: Sun, 25 Jun 2006 19:31
27 lines
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
#627
Author: StriKe
Date: Fri, 30 Jun 2006 05:24
35 lines
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
#628
Author: StriKe
Date: Fri, 30 Jun 2006 05:25
8 lines
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
#629
Author: Meindert Sprang
Date: Fri, 30 Jun 2006 05:54
23 lines
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
#630
Author: StriKe
Date: Fri, 30 Jun 2006 05:56
26 lines
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
#632
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 09:17
19 lines
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
#633
Author: StriKe
Date: Fri, 30 Jun 2006 12:24
39 lines
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
#634
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 14:29
38 lines
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
#635
Author: Ingeborg
Date: Fri, 30 Jun 2006 15:07
7 lines
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
#636
Author: Dr.Ruud
Date: Fri, 30 Jun 2006 15:30
14 lines
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
#637
Author: StriKe
Date: Fri, 30 Jun 2006 19:18
18 lines
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