UNIX Timestamp Generieren

    • VB.NET

    Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

      UNIX Timestamp Generieren

      hey hab mir mal ne halbe stunde zeitgenommen und diesen Snippet zusammen geschrieben, er ermöglicht das Generieren des UNIX Timestamps aus der Aktuellen zeit oder einer vorgegebenen Zeit:

      VB.NET-Quellcode

      1. Public Function TimeStamp(Optional ByVal Year As Integer = 0, Optional ByVal Month As Integer = 0, Optional ByVal Day As Integer = 0,
      2. Optional ByVal Hour As Integer = 0, Optional ByVal Minute As Integer = 0, Optional ByVal Second As Integer = 0)
      3. Dim _Jahr As Integer
      4. Dim _Monat As Integer
      5. Dim _Tag As Integer
      6. Dim _Stunde As Integer
      7. Dim _Minute As Integer
      8. Dim _Sekunde As Integer
      9. If Year = 0 = False Then _Jahr = Year - 1 Else _Jahr = Date.UtcNow.Year - 1
      10. If Month = 0 = False Then _Monat = Month - 1 Else _Monat = Date.UtcNow.Month - 1
      11. If Day = 0 = False Then _Tag = Day - 1 Else _Tag = Date.UtcNow.Day - 1
      12. If Hour = 0 = False Then _Stunde = (Hour - 2) * 60 * 60 Else _Stunde = Date.UtcNow.Hour * 60 * 60 '-2 wegen utc usw :D
      13. If Minute = 0 = False Then _Minute = Minute * 60 Else _Minute = Date.UtcNow.Minute * 60
      14. If Second = 0 = False Then _Sekunde = Second Else _Sekunde = Date.UtcNow.Second
      15. Dim _days As Integer = 0
      16. For _Year = 1970 To _Jahr
      17. For _month = 1 To 12
      18. _days += Date.DaysInMonth(_Year, _month)
      19. Next
      20. If _Year = _Jahr Then
      21. For _month = 1 To _Monat
      22. _days += Date.DaysInMonth(_Year, _month)
      23. Next
      24. _days += _Tag
      25. End If
      26. Next
      27. Dim _Timestamp As Integer = _days * 24 * 60 * 60
      28. _Timestamp += _Stunde
      29. _Timestamp += _Minute
      30. _Timestamp += _Sekunde
      31. Return _Timestamp
      32. End Function


      Ihr könnte diesen Code frei verwenden er sollte sich von selbst erklären ansonsten kommentier ich ihn gerne noch

      Erklärung:
      Einfach die Funktion benutzen ohne paramater
      TimeStamp()
      oder
      TimeStamp(Jahr, Monat, Tag, Stunde, Minute, Sekunde)

      es wird immer ein string mit dem TimeStamp zurück gegeben ;)
      Kritik und Lob wie immer erwünscht ;)

      viel spaß

      lg.
      Ist aber schon ein wenig Onanie ;)
      Das habe ich unter VB6 schon mal als Einzeiler gelöst.

      VB.NET-Quellcode

      1. Function TimeStamp(Optional ByVal Year As Integer = 0, Optional ByVal Month As Integer = 0, Optional ByVal Day As Integer = 0, Optional ByVal Hour As Integer = 0, Optional ByVal Minute As Integer = 0, Optional ByVal Second As Integer = 0)
      2. TimeStamp = DateDiff("s", #1/1/1970#, DateSerial(Year, Month, Day) + TimeSerial(Hour, Minute, Second))
      3. End Function
      4. Function TimeStampNow()
      5. TimeStamp = DateDiff("s", #1/1/1970#, Now)
      6. End Function

      Unter VB.Net geht es noch ein wenig eleganter.
      Feel free to implement :D
      --
      If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
      --

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

      Das ist meine Lösung:

      VB.NET-Quellcode

      1. Public Shared Function GetTimestamp(ByVal FromDateTime As DateTime) As Integer
      2. Dim Startdate As DateTime = #1/1/1970#
      3. Dim Spanne As TimeSpan
      4. Spanne = FromDateTime.Subtract(Startdate)
      5. Return CType(Math.Abs(Spanne.TotalSeconds()), Integer)
      6. End Function
      7. Public Shared Function GetDateFromTimestamp(ByVal unixTimestamp As Integer) As DateTime
      8. Dim Span As TimeSpan
      9. Dim Startdate As Date = #1/1/1970#
      10. If unixTimestamp = 0 Then Return Startdate
      11. Span = New TimeSpan(0, 0, unixTimestamp)
      12. Return Startdate.Add(Span)
      13. End Function


      MFG

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mcandy007“ ()

      mcandy007 schrieb:

      Das ist meine Lösung


      Lässt sich auch noch kompakter formulieren:

      VB.NET-Quellcode

      1. Public Shared Function GetTimestamp(ByVal FromDateTime As DateTime) As Integer
      2. Dim spanne As TimeSpan = FromDateTime - #1/1/1970#
      3. Return CType(Math.Abs(spanne.TotalSeconds()), Integer)
      4. End Function
      5. Public Shared Function GetDateFromTimestamp(ByVal unixTimestamp As Integer) As DateTime
      6. If unixTimestamp = 0 Then Return #1/1/1970#
      7. Dim Span As TimeSpan = New TimeSpan(0, 0, unixTimestamp)
      8. Dim startDate as DateTime = #1/1/1970#
      9. Return Startdate.Add(Span)
      10. End Function
      Von meinem iPhone gesendet
      Wenn man allerdings nur nach ner Möglichkeit sucht, Daten als Integer wo abzuspeichern, kann man auch ToFileTime(UTC) bzw. FromFileTime(UTC) verwenden.
      msdn.microsoft.com/en-us/libra…atetime.fromfiletime.aspx
      msdn.microsoft.com/en-us/libra….datetime.tofiletime.aspx
      msdn.microsoft.com/en-us/libra…tetime.tofiletimeutc.aspx
      msdn.microsoft.com/en-us/libra…time.fromfiletimeutc.aspx

      Die MS-Filetime unterschiedet sich in folgenden Punkten zum Unix-Timestamp:

      MSDN.com schrieb:

      A Windows file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC). Windows uses a file time to record when an application creates, accesses, or writes to a file.

      The fileTime parameter specifies a file time expressed in 100-nanosecond ticks.

      Starting with the .NET Framework version 2.0, the return value is a DateTime whose Kind property is Local.
      Von meinem iPhone gesendet