8

vb dot net 中是否有任何函数可以将日期时间转换为 unix 时间戳

任何帮助表示赞赏

4

4 回答 4

25

{Edit} 删除了旧的参考链接

自 1970 年 1 月 1 日以来的秒数 = unix 时间

要在 VB.NET 中获得此功能,请参见下面的示例(例如使用 DateTime.UtcNow,但您可以在此处插入任何所需的 DateTime)

Dim uTime As Double
uTime = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
于 2009-12-21T20:48:48.007 回答
7

我在某个时候写了这些 - 都与上面类似,只是在英国这里为我提供了关于旧夏季时间调整的更多细节。

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
于 2012-05-10T12:55:45.240 回答
1

查看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

或类似的东西会做到这一点。

请注意,这还没有经过我的测试,所以它可能不会工作:)

于 2009-12-21T20:50:26.227 回答
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
于 2017-07-18T20:44:24.950 回答