1970 年 1 月 1 日が 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 年には、合理的なことを必ず行ってください。