Есть ли функция в VB точка сети, чтобы преобразовать DateTime в Unix штамп времени Если я Google я получаю только наоборот, но не vb.net для Unix штамп времениDateTime в UnixTime Штамп в .net
Любая помощь ценится
Есть ли функция в VB точка сети, чтобы преобразовать DateTime в Unix штамп времени Если я Google я получаю только наоборот, но не vb.net для Unix штамп времениDateTime в UnixTime Штамп в .net
Любая помощь ценится
{Редактировать} удалена старая ссылка ссылка
секунд начиная с 1 января 1970 года = Юниксовое время
Чтобы получить это в VB.NET см ниже примере (в примере с использованием DateTime.UtcNow, но вы может подключаться к любой DateTime, которую вы хотите повторно)
Dim uTime As Integer
uTime = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
Глядя на 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
или что-то подобное будет делать это.
нота, это не было проверено мной, так что, вероятно, не будет работать :)
Я написал это в какой-то момент - все аналогичные приведенным выше, только с чуть более подробно на старой летней регулировки времени вещь для меня здесь, в Великобритании.
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
В 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
Эта ссылка была разбита. Не могли бы вы обновить ссылку и включить ее в свой ответ? – Matt
Уверен, 3 года спустя и ссылка не работает, обновив ответ с кодом примера – curtisk
Версия: (DateTime.UtcNow - # 1/1/1970 #). TotalSeconds - Кроме того, используйте Int64 или он будет завернут в год 2038. Аналогично задаче y2k. – Brain2000