Klik hier om in te loggen
Je bent momenteel niet ingelogd
Topic VB Itijdsverschil laten uitrekenen zondag 15 maart 2009 om 1:23
Iarwain
9 posts
Hallo allemaal,

Ik moet een programma schrijven voor het werk waarin wij, zogezegd, een downtime moeten invullen.
Bijvoorbeeld down van 12:30 uur tot 13:00 uur.
Nu wil ik Visual basic het half uur tijdsverschil laten uitrekenen, is hier een code voor ???

Alvast bedankt

Laatst bewerkt door Iarwain op zondag 15 maart 2009 om 1:26
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 15 maart 2009 om 1:23
RoelVB
Webmaster
108 posts
Ik neem aan dat je die tijden in een Date variable hebt gezet?
Anders kun je dat op de volgende manier doen:
Code
1
2
3
4
Dim Date1 As Date, Date2 As Date

Date1 = CDate("12:30")
Date2 = CDate("13:30")


Vervolgens rekenen we met de volgende code het aantal seconden verschil tussen de 2 data uit.
Code
1
MsgBox DateDiff("s", Date1, Date2)
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 15 maart 2009 om 12:02
Iarwain
9 posts
Thanx,
Maar kan dit alleen in een msgbox??
De time diference wilde ik graag in een textbox hebben.
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 15 maart 2009 om 15:09
RoelVB
Webmaster
108 posts
Je kan hem natuurlijk ook gewoon in een textbox zetten Smiley

Zo bijvoorbeeld:
Code
1
Text1.Text = DateDiff("s", Date1, Date2)
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 15 maart 2009 om 16:45
Iarwain
9 posts
De code werkt op zich, alleen laat hij nu alleen maar minuten zien.
Dus alles onder het uur gaat goed, maar zodra de downtime over het uur gaat dan blijft ij minuten laten zien. Dus 150 minuten voor 2:30 uur.

Is er ook een code die dit kan omzetten in tijd, zodat ik 2:30 uur zie ipv 150 minuten. ??
Reageer Quote dit bericht Bewerken Privé bericht zendenzaterdag 21 maart 2009 om 13:26
RoelVB
Webmaster
108 posts
Code
1
2
3
4
5
6
Dim Date1 As Date, Date2 As Date

Date1 = CDate("10:20")
Date2 = CDate("13:30")

MsgBox Format(Date2 - Date1, "hh:mm")


De messagebox op het einde geeft als uitkomst dus 03:10
Reageer Quote dit bericht Bewerken Privé bericht zendenzaterdag 21 maart 2009 om 18:53
Iarwain
9 posts
Code
1
dtpDownUur.Text = (Date2 - Date1, "hh:mm")

Deze code werkt ook niet, helaas.
Krijg de volgende errormelding:
Value of type 'System.Timespan' cannot be converted to 'String'

Korte info, voor tijdsaanduiding gebruik ik MaskedTextBox met Mask set op Time.

edit: gebruik ik deze code:
Code
1
2
3
4
5
6
Dim Date1 As Date, Date2 As Date

        Date1 = MaskedTextBox1.Text
        Date2 = MaskedTextBox2.Text

        MaskedTextBox3.Text = Format(Date2 - Date1, "hh:mm")


krijg ik deze error melding:
Kan een object van het type System.TimeSpan niet converteren naar het type System.IConvertible.

Laatst bewerkt door Iarwain op zaterdag 21 maart 2009 om 21:22
Reageer Quote dit bericht Bewerken Privé bericht zendenzaterdag 21 maart 2009 om 20:01
RoelVB
Webmaster
108 posts
Aah.. ik maak hieruit op dat je het over VB.Net hebt!

De volgende code moet dan werken:
Code
1
2
3
4
5
6
Dim Date1 As Date, Date2 As Date 

Date1 = MaskedTextBox1.Text 
Date2 = MaskedTextBox2.Text 

MaskedTextBox3.Text = Format(CDate((Date2 - Date1).ToString), "hh:mm")


Date2 - Date1 geeft in VB.Net namelijk een TimeSpan terug ipv een Date.
Door de TimeSpan te converteren naar een String kan ik er weer een Date van maken.
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 22 maart 2009 om 16:57
Iarwain
9 posts
Ik werk idd met vb.NET in Visual Studio 2008.

De code werkt perfect, alleen met een kleine kanttekening.

Als het verschil bv. 30 minuten is geeft hij aan 12:30 ipv 0:30
Ik zal even kijken waar dit aan ligt.

edit: Na lang zoeken ben ik er achter het werkt nu perfect.
De timestring moet met hoofdletter HH:mm
de code is uiteindelijk dit geworden:
Code
1
2
3
4
5
Dim Date1 As Date, Date2 As Date
        Date1 = dtpDownvan.Text
        Date2 = dtpDownTot.Text

        dtpDownUur.Text = Format(CDate((Date2 - Date1).ToString), "HH:mm")


Roel hartelijk bedankt voor alle hulp SmileySmileySmiley

Laatst bewerkt door Iarwain op zondag 22 maart 2009 om 19:18
Reageer Quote dit bericht Bewerken Privé bericht zendenzondag 22 maart 2009 om 18:10
Iarwain
9 posts
Hoi Roel,

Na wat testjes ben ik nog achter een foutje gekomen.
Als hij de nieuwe dag ingaat dan krijg ik ook een foutmelding.

bv. van 23:45 naar 00:15 uur. Dan wordt de tijd -23:30 uur.
Is hier ook een oplossing voor ???
Reageer Quote dit bericht Bewerken Privé bericht zendenmaandag 23 maart 2009 om 14:20