vb dot net 中是否有任何函数可以将日期时间转换为 unix 时间戳
任何帮助表示赞赏
{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
我在某个时候写了这些 - 都与上面类似,只是在英国这里为我提供了关于旧夏季时间调整的更多细节。
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
查看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
或类似的东西会做到这一点。
请注意,这还没有经过我的测试,所以它可能不会工作:)
至少在 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