vb dot net中是否有任何函数可以将datetime转换为unix时间戳 如果我谷歌我只得到反之亦然而不是vb.net到unix时间戳
感谢任何帮助
答案 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