1/1/1970 是 Unix 时代。请注意,它是 UTC 日期,您不能在转换中忽略它。因此:
Module DateConversion
Public ReadOnly Property Epoch() As DateTime
Get
Return New DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
End Get
End Property
Public Function FromUnix(ByVal seconds As Integer, local As Boolean) As DateTime
Dim dt = Epoch.AddSeconds(seconds)
If local Then dt = dt.ToLocalTime
Return dt
End Function
Public Function ToUnix(ByVal dt As DateTime) As Integer
If dt.Kind = DateTimeKind.Local Then dt = dt.ToUniversalTime
Return CInt((dt - Epoch).TotalSeconds)
End Function
End Module
注意 ToUnix(),DateTimeKind 可能未指定,就像在您的代码段中一样。考虑改用 DateTimeOffset 以使其明确。当所有这一切都崩溃时,一定要在 2038 年做一些合理的事情。