Tijd dat app uit is geweest

Status
Niet open voor verdere reacties.

TheJjokerR

Gebruiker
Lid geworden
25 apr 2008
Berichten
104
Hey,

Ik zou graag willen weten hoe je in VS2008 de tijd dat de applicatie uit is geweest kunt controleren.
Zou dat het makkelijkst zijn door het in een INI te schrijven?
Zo ja, wat is dan de commando om de huidige systeem tijd te bekijken en hoe bereken ik bij het opstarten wat het verschil is(ik weet wel hoe(Tijd nu - Tijd vorige afsluit) maar hoe doe je dat in code)

Thnx
 
System.DateTime.Now

afhankelijk of je nog meer informatie wilt wegschrijven lijkt mij een xml het makkelijkst.

heb hier een voorbeeldje voor je gemaakt.

Code:
Public Class Form1

    Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed

        Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("c:\test.xml", Nothing) 'xml bestand maken
            writer.WriteStartElement("XML") 'eerste element
            writer.WriteStartElement("PRG_UIT") 'tweede element
            writer.WriteString(System.DateTime.Now) 'datum opslaan in tweede element
            writer.WriteEndElement() 'tweede element sluiten
            writer.WriteEndElement() 'eerste element sluiten
            writer.Flush() 'alles uit geheugen weggooien
            writer.Close() 'bestand sluiten
        End Using

    End Sub



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim label As New Label
        label.AutoSize = True
        Me.Controls.Add(label) 'labeltje maken

        Dim Bestand As New System.Xml.XmlDocument()
        Bestand.Load("c:\test.xml") 'xml inladen

        Dim PRG_AAN As System.Xml.XmlNode = Bestand.SelectSingleNode("/XML/PRG_UIT") 'informatie in /XML/PRG_UIT uitlezen 

        label.Text = PRG_AAN.InnerText 'informatie in label laten zien

    End Sub
End Class

Mvg Pizara
 
Hey bedankt man!

Het werkt!

Maar wat betekent '_Disposed' moet dit niet gewoon ook '_Load' zijn?

Thnx...
 
Laatst bewerkt:
Disposed() is het moment dat je op het kruisje van je programma drukt , of het programma afsluit.

Met andere woorden : kruisje klikken , event disposed gestart, dan die datum opslaan in je xml file, dan pas afsluiten.
 
Laatst bewerkt:
Ok, maar zoals het in jouw code staat rekent hij dus al op een geschreven xml bestand :P, maar ik weet wat ik moet doen dus thanks :D

Thanks
-TheJjokerR
 
Ok, ik snap het nu wel, maar ik weet niet hoe ik het beste het verschil kan uitrekenen. Als je namelijk een normale som gebruikt lukt het niet.

Is er een manier om System.DateTime.Now op te splitsen naar dagen en uren, zodat je kan zien hoe lang het programma ongeveer is uit geweest.
En ik kan ook niet System.DateTime.Now laten zien in een label, kan iemand mij uitleggen hoe dat moet?

thnx
-TheJjokerR

PS: Thanks nog voor de goede omschrijving bij het script!
 
Laatst bewerkt:
Je kan toch gewoon de tijd van toen aftrekken van de tijd van nu?

Code:
        Dim TijdsOverspanning As New TimeSpan
        Dim Toen As String = New System.DateTime(2008, 4, 1, 14, 36, 29) '1 april 2008 14:36:29

        TijdsOverspanning = System.DateTime.Now.Subtract(Toen)
 
Ik zat meer te denken aan zoiets:
(24d+b)-e
d = aantal dagen offline
b = begintijd nu(tijd dat je programma opgestart hebt)
e = eindtijd (vorige keer dat je op X'je klikte)

Want ik denk dat dit iets makkelijker is om te doen, ik hoef ook niet de exacte tijd te weten, eigenlijk alleen uren en dagen.

Mischien is het handig als ik uitleg wat ik er mee wil:
Een soort gastje op je scherm die bepaalde 'moods' heeft, het ligt eraan wat je doet: lang offline en hij word depri, 18+ geweld games spelen en hij word aggresief en slaat je beeld kapot :P

Thanks
-TheJjokerR
 
Code:
        Dim StringToen As String
        StringToen = "1-1-2008 13:26:09" 'vanuit de xml geladen is het (de datum) een String (NodeValue.InnerText)

        Dim DateTimeToen As System.DateTime = DateValue(StringToen) 'maak DateTimeToen een DateTime waarde van StringToen 



        Dim TijdsOverspanning As TimeSpan = System.DateTime.Now.Subtract(StringToen) 'trek de tijd van nu af met die van DateTimeToen

        Debug.Print(TijdsOverspanning.Days) 'laat aantal dagen zien
        Debug.Print((TijdsOverspanning.Days * 24) + TijdsOverspanning.Hours) 'laat aantal uren zien


Hoop dat het nu duidelijk is.
 
Code:
        Dim StringToen As String
        StringToen = "1-1-2008 13:26:09" 'vanuit de xml geladen is het (de datum) een String (NodeValue.InnerText)

        Dim DateTimeToen As System.DateTime = DateValue(StringToen) 'maak DateTimeToen een DateTime waarde van StringToen 



        Dim TijdsOverspanning As TimeSpan = System.DateTime.Now.Subtract(StringToen) 'trek de tijd van nu af met die van DateTimeToen

        Debug.Print(TijdsOverspanning.Days) 'laat aantal dagen zien
        Debug.Print((TijdsOverspanning.Days * 24) + TijdsOverspanning.Hours) 'laat aantal uren zien


Hoop dat het nu duidelijk is.

Thanks gast, maar ik weet niet echt goed wat ik er mee moet doen, ik snap niet waarom je dit doet:
StringToen = "1-1-2008 13:26:09"
En ik zie niet waar je de string opslaat in de xml...
 
ik laad geen xml in, ik maakte er gelijk een string van.. anders wordt de code veel te lang en onoverzichtelijk.

ik zei : "vanuit de xml geladen is het (de datum) een String (NodeValue.InnerText)"

dus als je de xml info inlaad, dan wordt dat als een string gereturned.

daarom heb ik het gewoon ingevoerd als voorbeeld. anders moest ik de xml-code ook weer gaan toevoegen.
 
Of in je settings een integer maken (solution explorer, dubbelklik <project naam>) en wanneer het wordt afgesloten (Me_Closed) de waarde van de integer veranderen in de tijd en bij wanneer het programma geload wordt (Me_Load) de huidige datum vergelijken met die opgeslagen staat in de settings.
Ik weet niet of het duidelijk genoeg is.

(Settings worden automatisch opgeslagen :P)
 
Laatst bewerkt:
Pizara zijn code is prima, maar ik geef ninjaplayer gelijk dat het mischien beter met een setting kan, dan moet je niet met die xml bezig zijn en moet je niet beveligen tegen fouten in je xml file :)
 
Ok bedankt allemaal maar ik krijg het maar niet aan het werk :confused:

De aantal uren die ik krijg kloppen niet, als ik het goed moet ik dus dit deel:
StringToen = "2-12-2008 13:26:09"

Zo maken dat hij het laad uit de XML?

Maar als ik dit deel heb zegt hij dat het aantal uren offline 7081 is, maar dat klopt niet.

Dit is het deel dat ik heb voor het laden:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim Bestand As New System.Xml.XmlDocument()
Bestand.Load("c:\test.xml") 'xml inladen

Dim PRG_AAN As System.Xml.XmlNode = Bestand.SelectSingleNode("/XML/PRG_UIT") 'informatie in /XML/PRG_UIT uitlezen

Label.Text = PRG_AAN.InnerText 'informatie in label laten zien
Label3.Text = System.DateTime.Now 'informatie in label laten zien

Dim StringToen As String
StringToen = "2-12-2008 13:26:09" 'vanuit de xml geladen is het (de datum) een String (NodeValue.InnerText)

Dim DateTimeToen As System.DateTime = DateValue(StringToen) 'maak DateTimeToen een DateTime waarde van StringToen

Dim TijdsOverspanning As TimeSpan = System.DateTime.Now.Subtract(StringToen) 'trek de tijd van nu af met die van DateTimeToen

Debug.Print(TijdsOverspanning.Days) 'laat aantal dagen zien
Label12.Text = ((TijdsOverspanning.Days * 24) + TijdsOverspanning.Hours) 'laat aantal uren zien

Label11.Text = SystemInformation.UserName
End Sub


En dit voor disposed:
Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("c:\test.xml", Nothing) 'xml bestand maken
writer.WriteStartElement("XML") 'eerste element
writer.WriteStartElement("PRG_UIT") 'tweede element
writer.WriteString(System.DateTime.Now) 'datum opslaan in tweede element
writer.WriteEndElement() 'tweede element sluiten
writer.WriteEndElement() 'eerste element sluiten
writer.Flush() 'alles uit geheugen weggooien
writer.Close() 'bestand sluiten
End Using

Kun je dit aub nakijken, en kijken wat het zou kunnen zijn dat hij 7081 aan blijft geven?

PS: Ja, ik heb de labels zelf toegevoegd en het aanmaken uit de code gehaald
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan