在.net中的Unix TimeStamp的DateTime

时间:2009-12-21 20:45:29

标签: .net vb.net datetime unix-timestamp

vb dot net中是否有任何函数可以将datetime转换为unix时间戳 如果我谷歌我只得到反之亦然而不是vb.net到unix时间戳

感谢任何帮助

4 个答案:

答案 0 :(得分:19)

{编辑}删除了旧的参考链接

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

要在VB.NET中获取此信息,请参阅下面的示例(在示例中使用DateTime.UtcNow,但您可以插入所需的任何DateTime)

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

答案 1 :(得分:6)

我在某些时候写过这些内容 - 所有内容都类似于上面的内容,只是更详细地介绍了我在英国的旧夏令时调整事项。

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

答案 2 :(得分: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

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

请注意,这还没有经过我的测试,所以它可能无法正常工作:)

答案 3 :(得分: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