Timestamp in VB2010

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Timestamp in VB2010

    Hallo mir wurde vor etwas längerer Zeit die möglichkeit vom "Timestamp" also Zeitstempel in VB empfohlen heute wollt ich sie nutzen
    jedoch ist bei VisualBasic2010 Express Edition keine "Funktion" namens´TimeStamp´ vorhanden. Hat diese dort einen anderen Namen?
    Oder wie sprech ich diese an

    Für: Dieses Codebeispiel

    VB.NET-Quellcode

    1. Dim StartZeit As New Timestamp(Date.Now.Days, Date.Now.Hours, Date.Now.Minutes, Date.Now.Seconds)


    eigentlich ganz simple nur um den Start des Programmes zu Speichern
    Hoffe könnt mir helfen freue mich über ernstgemeinte und hilfereiche antworten

    MFG Eragon276
    naja ich möchte halt uhrzeit + datum speichern und diese dann in zeit umwandel um zu berechnen wie lang das programm "offline" war

    beispiel

    Letze Sitzung: 24.1.2010 13:30:00
    Neue Sitzung: 25.1.2010 14:30:00

    Resultat: 25 Stunden offline gewesen


    daher wär:

    VB.NET-Quellcode

    1. Dim x As DateTime = DateTime.Now

    schon eine option jedoch frage ich mcih wie ich dann die zeitdiffernz ausrechne ich muss ja jede feld in die einzelnen teile zurück setzen (jahre,monate,tage,stunden,minuten,sekunden)
    Dann speichere einfach den Zeitpunkt als Ticks. Dann kannst du die Differenz ticksNeu - ticksAlt benutzen, um ein TimeSpan zu erstellen. Damit kannst du dann die Zeitspanne in Stunden, Minuten oder Sekunden oder auch in der Darstellung HH:mm:ss abrufen.

    Viele Grüße, Phil.
    Ich hab mir jetzt mal kurz diesen Code zusammgeschrieben
    aus den Antworten von euch:

    VB.NET-Quellcode

    1. Dim x As DateTime = DateTime.Now
    2. Threading.Thread.Sleep(11246)'Zeitspanne circa 11 Sekunden
    3. Dim y As DateTime = DateTime.Now
    4. Dim z As TimeSpan
    5. z = x - y
    6. MsgBox(z.ToString)



    jedoch zeigt Z.ToString nicht die Tage etc. an sondern nur HH:MM:SS

    2. problem die zeit wird mit 5-6 stellen nach dem komma angegen wie krieg ich die millisekunde weg ? ^^
    Verwende die ersten 5 oder 8 Zeichen des Strings: String.SubString()
    oder mach es so: TimeSpan.ToString()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Verwende die ersten 5 oder 8 Zeichen des Strings: String.SubString()
    oder mach es so: TimeSpan.ToString()


    danke dafür erstmal.. damit wär das problem mit den HH:mm:ss aus der welt... jedoch hab ich gerade gesehen das der pc erst bei der zeitspanne von einem tag diese erst einblendet beispiel

    Heute -> Heute (HH:mm:ss)
    Heute -> Morgen (TT:HH:mm:ss)
    also kommt der wert TT erst dan dazu dann bringt mir das mit dem Substring ja leider nichts
    wär es dann nciht besser den wert (Z.tostring)
    durch Split zu trennen und je nachdem wieviele werte komm diese in die Kategorie YYYY.MM.TT HH:mm:ss zu unterteiln ? und wie würde man das am besten amchen... hab da keine idee hoffe ihr.

    MFG Eragon276
    Dann testest Du, ob der TimeSpan-Wert kleiner als 1 Tag ist und hängst eine "00:" davor.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    naja es bleibt dann nur die frage spittet er nur tage oder auch in wochen?

    also entweder 23 Tage
    oder 3 Wochen + 2 tage

    ob die zahl nur 1-10 stellig ist intressiert ja dem Splitereignis nicht daher hoffe ich zeigt er nur Tage an ... und nicht wochen, monate,jahre
    Wozu denn überhaupt Split()?

    VB.NET-Quellcode

    1. String.Format("{0:00}:{1:00}:{2:00}:{3:00}", span.Days, span.Hours, span.Minutes, span.Seconds)

    Ist zwar nicht das kürzeste, aber gibt die Zeitspanne im Format TT:HH:mm:ss aus, wobei bei einstelligen Werten immer eine führende Null angezeigt wird.

    Viele Grüße, Phil.
    Wie wäre es hiermit ?

    VB.NET-Quellcode

    1. Dim StartZeit As New TimeSpan(13, 16, 42, 0)
    2. Dim EndZeit As New TimeSpan(Now.Day, Now.Hour, Now.Minute, Now.Second)
    3. Dim Ergebnis As New TimeSpan
    4. Ergebnis = EndZeit - StartZeit
    5. MsgBox(Ergebnis.TotalHours)

    In der MsgBox wird dir der Zeitunterschied in Stunden angegeben. Wenn du das Ergebnis lieber in Tagen hättest ändere .TotalHours in .TotalDays um.
    Wenn du das einzeln aufgelistet haben möchtest, musst du dir die Anzeige zusammenbasteln.

    VB.NET-Quellcode

    1. Ergebnis.Days
    2. Ergebnis.Hours
    3. Ergebnis.Minutes


    Gruß
    HerrFrie
    das problem hab ich jetzt mithilfe von euch gelöst ^^
    jedoch hab ich jetzt neue probleme bei den ich nicht weiter kommt

    1.)bei den seconds wird nun eine ganz komische zahle wiedergegeben vllt könnt ich mir da helfen oder ist ein fehler im code?

    VB.NET-Quellcode

    1. Dim startzeit As New TimeSpan(Now.Month, Now.Day, Now.Hour, Now.Minute, Now.Second)
    2. label1.text = startzeit


    Jetzt steht im Label1 dieser wert "1.18:19:33:02800000"
    eigentlich logisch 1Monat 18Tag 19Stunden 33Minuten aber Sekunden ?!


    ein anderes problem ist das ich im startzeit as new timespan auch den wet now.year haben will jedoch bekomm ich da folgenden fehler: Fehler "1 Fehler bei der Überladungsauflösung, da keine zugreifbare "New" diese Anzahl von Argumenten akzeptiert. "

    Info: Wenn ich einen New Timespan erstelle und dem (Now.Year) zuweise kann er diesen wert wiedergeben aber warum so nicht?

    hoffe könnt mir bei beidem helfen

    Mfg Eragon276
    Du solltest dir die verfügbaren Timespan-Konstruktoren mal genau durchlesen. Da ist weder Monat noch Jahr vefügbar. Der letzte Parameter entspricht Millisekunden.
    Die DateTime-Struktur sollte dir da weiterhelfen. Auch damit kann man rechnen. So gibt es Methoden wie DateTime.AddYear(Wert as Integer), wobei der Wert positiv wie negativ sein kann. ;)
    Du kannst natürlemeng auch Timespans additizifieren.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    das mit den Monaten & Jahren wurde mir auch schon vom Kollegen gesagt.
    Jedoch kann ich ja ein Timespan mit Now.Year, Now.Month und Now.Day berechnen lassen und dieser wird angezeigt. Ich versteh das einfach nicht warum das einmal geht und wenns soviele sind wiederum nicht ^^ und warum er überhaupt die millisekunden anzeigt wenn ich die garnich als Now.Milliseconds haben will^^
    Gugge:
    TimeSpan (Int32, Int32, Int32, Int32, Int32) Alle Argumente werden als Integer übernommen. Now ist ein DateTime-Objekt, das datum und Uhrzeit von jetze enthält. DateTime.Year gibt einen Integer zurück.
    Wenn du nun das Jahr als Integer der Timespan als Stunde übergibst... (Woher soll Timespan wissen, das der übergebene Integer mal eine Jahreszahl war?)
    Nutze also die DateTime-Structur z.B. wie folgt:

    VB.NET-Quellcode

    1. Dim Jetze As DateTime = Now
    2. Dim Morgen As DateTime = Jetze.AddDays(1)
    3. Dim Gestern As DateTime = Jetze.AddDays(-1)
    4. Label1.Text = "Jetze isses: " & Jetze.ToLongDateString & vbCrLf
    5. Label1.Text &= "Morgen isses: " & Morgen.ToLongDateString & vbCrLf
    6. Label1.Text &= "gestern wars: " & Gestern.ToLongDateString

    ;)
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: