Штамп с датой в UnixTime в .net - PullRequest
       11

Штамп с датой в UnixTime в .net

6 голосов
/ 21 декабря 2009

Есть ли в vb dot net какая-либо функция для преобразования даты и времени в метку времени Unix? Если я Google, я получаю только наоборот, но не vb.net, чтобы Unix метка времени

Любая помощь приветствуется

Ответы [ 4 ]

19 голосов
/ 21 декабря 2009

{Edit} удалена старая ссылка

секунды с 1 января 1970 года = время Unix

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

Dim uTime As Integer
uTime = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
6 голосов
/ 10 мая 2012

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

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
1 голос
/ 21 декабря 2009

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

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

TimeSpan ts = (dt - start);

ts.TotalSeconds //unix timestamp

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

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

0 голосов
/ 18 июля 2017

В javascript, по крайней мере, метки времени Unix - это миллисекунды, и я нашел случай, когда они мне понадобились Этот код использует .Net, используя 10000 тиков / миллисекунду. Вот код, который я использовал:

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
...