2009-12-21 3 views
5

Есть ли функция в VB точка сети, чтобы преобразовать DateTime в Unix штамп времени Если я Google я получаю только наоборот, но не vb.net для Unix штамп времениDateTime в UnixTime Штамп в .net

Любая помощь ценится

ответ

17

{Редактировать} удалена старая ссылка ссылка

секунд начиная с 1 января 1970 года = Юниксовое время

Чтобы получить это в VB.NET см ниже примере (в примере с использованием DateTime.UtcNow, но вы может подключаться к любой DateTime, которую вы хотите повторно)

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

Эта ссылка была разбита. Не могли бы вы обновить ссылку и включить ее в свой ответ? – Matt

+0

Уверен, 3 года спустя и ссылка не работает, обновив ответ с кодом примера – curtisk

+0

Версия: (DateTime.UtcNow - # 1/1/1970 #). TotalSeconds - Кроме того, используйте Int64 или он будет завернут в год 2038. Аналогично задаче y2k. – Brain2000

1

Глядя на http://www.codeproject.com/KB/cs/timestamp.aspx это показывает Unix -> сеть, так что вы можете идти в обратном направлении, скорее всего:.

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

TimeSpan ts = (dt - start); 

ts.TotalSeconds //unix timestamp 

или что-то подобное будет делать это.

нота, это не было проверено мной, так что, вероятно, не будет работать :)

5

Я написал это в какой-то момент - все аналогичные приведенным выше, только с чуть более подробно на старой летней регулировки времени вещь для меня здесь, в Великобритании.

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

В javascript, по крайней мере, временные метки unix равны миллисекундам, и я нашел случай, в котором я нуждался в них. Этот код использует .Net, используя 10 000 тиков/миллисекунду. Вот код, который я использовал:

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 
Смежные вопросы