VB.NET-Tipp 0138: Unixzeit herausfinden
von burny
Beschreibung
Die Unixzeit gibt die Anzahl Sekunden an, die seit dem 1.1.1970 (GMT/UTC) vergangen sind (Unixzeit ). Die Klasse in diesem Beispiel ermöglicht es, diese in Tagen, Stunden, Minuten, Sekunden oder Millisekunden zu berechnen, sowie Werte (zum Beispiel 15 Tage) in Zeitspannen umzuwandeln.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Compact Framework 1.0, .NET Compact Framework 2.0, .NET Framework 4 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008, Visual Basic 2010 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2005 ' ' Referenzen: ' - System ' - System.Data ' - System.Deployment ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' ' ############################################################################## ' ################################# Form1.vb ################################### ' ############################################################################## Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim ut As New UnixTime() Dim utf As UnixTime.UnixTimeFormat utf = ListBox1.SelectedIndex MsgBox("Die Unixzeit in " & CStr(ListBox1.SelectedValue) & _ " beträgt jetzt " & ut.Get(utf) & " " & _ CStr(ListBox1.SelectedValue) & "!") MsgBox("Nun wird die Unixzeit der Klasse auf 15 Tage geändert.") ut.Set(15, UnixTime.UnixTimeFormat.Days) MsgBox("15 Tage nach dem 1.1.1970 entsprechen " & _ CStr(ut.Get()) & " Unixzeit-Sekunden!") MsgBox("Man kann die Unixzeit auch statisch als TimeSpan-Objekt " & _ "abrufen. Sie betrug am 1. Januar 2008 " & _ UnixTime.GetUnixTimeOfDate(New Date(2008, 1, 1)).TotalSeconds & _ " Sekunden.") End Sub Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load ListBox1.SelectedIndex = 1 End Sub End Class ' ############################################################################## ' ################################ UnixTime.vb ################################# ' ############################################################################## Public Class UnixTime Dim time As TimeSpan ''' <summary> ''' Bestimmt das Ein-/Ausgabeformat der Unixzeit ''' </summary> Public Enum UnixTimeFormat ''' <summary> ''' Millisekunden ''' </summary> Milliseconds = 0 ''' <summary> ''' Sekunden(Standard) ''' </summary> Seconds ''' <summary> ''' Minuten ''' </summary> Minutes ''' <summary> ''' Stunden ''' </summary> Hours ''' <summary> ''' Tage ''' </summary> Days End Enum Property TimeSpan() As TimeSpan Get Return time End Get Set(ByVal value As TimeSpan) time = value End Set End Property ''' <summary> ''' Erstellt eine neue Instanz der <see cref="UnixTime" />-Klasse. ''' </summary> Public Sub New() Me.Set(GetUnixTime(UnixTimeFormat.Milliseconds), _ UnixTimeFormat.Milliseconds) End Sub Public Sub New(ByVal t As Long, ByVal format As UnixTimeFormat) Me.Set(t, format) End Sub ''' <summary> ''' Gibt die Unixzeit im Format <paramref name="format">format</paramref> ''' zurück. ''' </summary> ''' <param name="format">Das Zeitformat</param> ''' <returns></returns> Public Function [Get](Optional ByVal format As UnixTimeFormat _ = UnixTimeFormat.Seconds) As Long Return ConvertTimeSpanToUnixTime(time, format) End Function ''' <summary> ''' Setzt die Unixzeit innerhalb dieser Klasse. ''' </summary> ''' <param name="value">Ein Long-Wert, der eine Zahl passend zu ''' <paramref name="format">format</paramref> enthält.</param> ''' <param name="format">Das Zeitformat des Parameters ''' <paramref name="value">value</paramref>.</param> Public Sub [Set](ByVal value As Long, __ Optional ByVal format As UnixTimeFormat = UnixTimeFormat.Seconds) time = ConvertValueToTimeSpan(value, format) End Sub ''' <summary> ''' Gibt die Unixzeit zurück, die bis zu einem bestimmten Datum vergangen ''' ist. ''' </summary> ''' <param name="value">Der Zeitwert</param> ''' <param name="format">Das Zeitformat des Parameters ''' <paramref name="value">value</paramref>.</param> ''' <returns></returns> Public Shared Function ConvertValueToTimeSpan(ByVal value As Long, _ Optional ByVal format As UnixTimeFormat = _ UnixTimeFormat.Seconds) As TimeSpan Dim d As New TimeSpan(0, 0, 0) Select Case format Case UnixTimeFormat.Milliseconds d = TimeSpan.FromMilliseconds(value) Case UnixTimeFormat.Seconds d = TimeSpan.FromSeconds(value) Case UnixTimeFormat.Minutes d = TimeSpan.FromMinutes(value) Case UnixTimeFormat.Hours d = TimeSpan.FromHours(value) Case UnixTimeFormat.Days d = TimeSpan.FromDays(value) Case Else Return Nothing Exit Function End Select Return d End Function ''' <summary> ''' Gibt die Unixzeit im Zeitformat <paramref name="format">format ''' </paramref> zurück und weist diesen Zeitwert der Klasse zu. ''' </summary> ''' <returns>Die Zeitformatierte Unixzeit.</returns> Public Shared Function GetUnixTime(Optional ByVal format As UnixTimeFormat _ = UnixTimeFormat.Seconds) As Long Dim t As TimeSpan t = GetUnixTimeOfDate(Date.UtcNow) Return ConvertTimeSpanToUnixTime(t, format) End Function ''' <summary> ''' Gibt die Unixzeit zurück. ''' </summary> ''' <param name="d">The date of which the unix time is calculated.</param> ''' <returns>Eine TimeSpan, die die Unixzeit(die Zeit seit dem 1.1.1970 ''' vergangen ist</returns> Public Shared Function GetUnixTimeOfDate(ByVal d As Date) As TimeSpan Return (d - New DateTime(1970, 1, 1)) End Function ''' <summary> ''' Konvertiert eine Zeitspanne in eine Zeitwert im Zeitformat ''' <paramref name="format">format</paramref>. ''' </summary> ''' <param name="ts">Die zeitspanne</param> ''' <param name="format">Das Zeitformat</param> ''' <returns></returns> Private Shared 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
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.