UNIX時間は「UTCでの1970年1月1日 午前0時00分00秒(unix epoch)からの経過秒数」と定義されるため、unix epochの値の入ったDateTime型のインスタンスに、UNIX時間の値を秒数として足してやればDateTime型の値として扱える。
同様にDateTime型からUNIX時間を求めるには、DateTimeKindをUtcにしてからunix epochとの差をとれば、その秒数がUNIX時間となる。
Imports System Public Module UnixTime Public ReadOnly UnixEpoch As DateTime= new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) Public Function ToUnixTime(ByVal dateTime As DateTime) As Long If dateTime.Kind <> DateTimeKind.Utc Then dateTime = dateTime.ToUniversalTime() return CLng(dateTime.Subtract(UnixEpoch).TotalSeconds) End Function Public Function FromUnixTime(ByVal unixTime As Long) As DateTime return UnixEpoch.AddSeconds(unixTime) End Function Public Sub Main() Console.WriteLine(ToUnixTime(new DateTime(2009, 02, 13, 23, 31, 30, DateTimeKind.Utc))) Console.WriteLine(ToUnixTime(new DateTime(2038, 01, 19, 03, 14, 07, DateTimeKind.Utc))) Console.WriteLine(FromUnixTime(1000000000)) Console.WriteLine(FromUnixTime(Integer.MaxValue)) End Sub End ModuleDateTimeKind.Utc Then dateTime = dateTime.ToUniversalTime() return CLng(dateTime.Subtract(UnixEpoch).TotalSeconds) End Function Public Function FromUnixTime(ByVal unixTime As Long) As DateTime return UnixEpoch.AddSeconds(unixTime) End Function Public Sub Main() Console.WriteLine(ToUnixTime(new DateTime(2009, 02, 13, 23, 31, 30, DateTimeKind.Utc))) Console.WriteLine(ToUnixTime(new DateTime(2038, 01, 19, 03, 14, 07, DateTimeKind.Utc))) Console.WriteLine(FromUnixTime(1000000000)) Console.WriteLine(FromUnixTime(Integer.MaxValue)) End Sub End Module]]>
using System; public class UnixTime { public readonly static DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public static long ToUnixTime(DateTime dateTime) { if (dateTime.Kind != DateTimeKind.Utc) dateTime = dateTime.ToUniversalTime(); return (long)dateTime.Subtract(UnixEpoch).TotalSeconds; } public static DateTime FromUnixTime(long unixTime) { return UnixEpoch.AddSeconds(unixTime); } public static void Main() { Console.WriteLine(ToUnixTime(new DateTime(2009, 02, 13, 23, 31, 30, DateTimeKind.Utc))); Console.WriteLine(ToUnixTime(new DateTime(2038, 01, 19, 03, 14, 07, DateTimeKind.Utc))); Console.WriteLine(FromUnixTime(1000000000)); Console.WriteLine(FromUnixTime(int.MaxValue)); } }
1234567890 2147483647 2001/09/09 1:46:40 2038/01/19 3:14:07