2009-12-21 10 views
5

C'è qualche funzione in VB dot net per convertire datetime a Unix timestamp Se I google ottengo solo il viceversa, ma non VB.NET per unix timestampDateTime unixtime Stamp in .net

Qualsiasi aiuto è apprezzato

risposta

17

{Modifica} rimosso vecchio link di riferimento

secondi dal 1 gennaio 1970 il tempo = unix

Per ottenere questo in VB.NET vedi sotto esempio (nell'esempio utilizzando DateTime.UtcNow, ma si può inserire qualsiasi DateTime che desideri ri)

Dim uTime As Integer 
uTime = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds 
+3

Questo link è rotto. Potresti aggiornare il link e includere i contenuti nella tua risposta? – Matt

+0

Abbastanza sicuro, 3 anni dopo e il collegamento è interrotto, aggiornamento risposta con codice di esempio – curtisk

+0

Versione Const: (DateTime.UtcNow - # 1/1/1970 #). TotalSeconds - Inoltre, utilizzare un Int64 o si avvolgerà nell'anno 2038. Simile al problema di y2k. – Brain2000

1

Guardando http://www.codeproject.com/KB/cs/timestamp.aspx mostra unix -> rete in modo da poter tornare indietro più probabile:.

DateTime dt = "the date"; 
DateTime start= new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 

TimeSpan ts = (dt - start); 

ts.TotalSeconds //unix timestamp 

o qualcosa di simile lo farà.

nota, questo non è stato testato da me il lavoro in modo che probabilmente non :)

5

Ho scritto questi ad un certo punto - tutto simile al precedente solo con un po 'più in dettaglio sulla cosa regolazione dell'ora vecchio estivo per io qui nel Regno Unito.

Public Function UnixToTime(ByVal strUnixTime As String) As Date 
    UnixToTime = DateAdd(DateInterval.Second, Val(strUnixTime), #1/1/1970#) 
    If UnixToTime.IsDaylightSavingTime = True Then 
     UnixToTime = DateAdd(DateInterval.Hour, 1, UnixToTime) 
    End If 
End Function 

Public Function TimeToUnix(ByVal dteDate As Date) As String 
    If dteDate.IsDaylightSavingTime = True Then 
     dteDate = DateAdd(DateInterval.Hour, -1, dteDate) 
    End If 
    TimeToUnix = DateDiff(DateInterval.Second, #1/1/1970#, dteDate) 
End Function 
0

In JavaScript, almeno, timestamp Unix sono millisecondi, e ho trovato un caso in cui ne avevo bisogno. Questo codice fa uso di .Net usando 10.000 tick/millisecondi. Ecco il codice che ho usato:

Public Module UnixTime 
    Const UnixEraStartTicks As Long = 621355968000000000 
    <Extension> Public Function UnixTimestamp(value As Date) As Long 
     Dim UnixEraTicks = value.Ticks - UnixEraStartTicks 
     Return UnixEraTicks \ 10000 
    End Function 
    Public Function DateFromUnix(timestamp As Long) As Date 
     Return New Date(UnixEraStartTicks + timestamp * 10000) 
    End Function 
End Module 
Problemi correlati