Google+ Tools
Make Google+ profile picture
Make Google plus banners for profile
Create and share your Google Plus profile banners.

Profile image for mrk studios Tobias Brennecke on August 1, 2007
A class for calculating the Unix-Time of a date. Can be returned in days, hours, minutes, seconds, milliseconds.
Language
VB.NET
Tags

UnixTime


Public Class UnixTime

    Dim time As TimeSpan
    Public Enum UnixTimeFormat
        Milliseconds
        Seconds
        Minutes
        Hours
        Days
    End Enum


    Public Sub New()
        Me.set(GetUnixTime(UnixTimeFormat.Milliseconds), UnixTimeFormat.Milliseconds)
    End Sub
    Public Sub New(ByVal format As UnixTimeFormat)
        Me.set(GetUnixTime(UnixTimeFormat.Milliseconds), format)
    End Sub
    Public Sub New(ByVal t As Long, ByVal format As UnixTimeFormat)
        Me.set(t, format)
    End Sub

    Public Function [get](Optional ByVal format As UnixTimeFormat = UnixTimeFormat.Seconds) As Long
        Return convertTimeSpanToUnixTime(time, format)
    End Function
    Public Sub [set](ByVal value As Long, Optional ByVal format As UnixTimeFormat = UnixTimeFormat.Seconds)
        Dim mult As Long = 1
        Select Case format
            Case UnixTimeFormat.Milliseconds
                mult = 1
            Case UnixTimeFormat.Seconds
                mult = 1000
            Case UnixTimeFormat.Minutes
                mult = 60 * 1000
            Case UnixTimeFormat.Hours
                mult = 60 * 60 * 1000
            Case UnixTimeFormat.Days
                mult = 24 * 60 * 60 * 1000
            Case Else
                Exit Sub
        End Select
        time = TimeSpan.FromMilliseconds(value / mult)
    End Sub
    ''' <summary>
    ''' Gets the unix time.
    ''' </summary>
    ''' <returns></returns>
    Public Function GetUnixTime(Optional ByVal format As UnixTimeFormat = UnixTimeFormat.Seconds) As Long
        time = GetUnixTime(Date.UtcNow, format)
        Return convertTimeSpanToUnixTime(time, format)
    End Function
    ''' <summary>
    ''' Gets the unix time.
    ''' </summary>
    ''' <param name="d">The date of which the unix time is calculated.</param>
    ''' <returns></returns>
    Public Function GetUnixTime(ByVal d As Date, Optional ByVal format As UnixTimeFormat = UnixTimeFormat.Seconds) As TimeSpan
        Return (d - New DateTime(1970, 1, 1))

    End Function

    Private Function convertTimeSpanToUnixTime(ByVal ts As TimeSpan, ByVal format As UnixTimeFormat) As Long

        Select Case format
            Case UnixTimeFormat.Milliseconds
                Return ts.TotalMilliseconds
            Case UnixTimeFormat.Seconds
                Return ts.TotalSeconds
            Case UnixTimeFormat.Minutes
                Return ts.TotalMinutes
            Case UnixTimeFormat.Hours
                Return ts.TotalHours
            Case UnixTimeFormat.Days
                Return ts.TotalDays
            Case Else
                Return Nothing
        End Select
    End Function
End Class

Comments

blog comments powered by Disqus