.net UNIX時間取得方法

・C#

using System;

class Program
{
  static void Main()
  {
    // 現在日時を表すDateTimeオブジェクトを取得
    DateTime targetTime = DateTime.Now;
   
    long unixTime = GetUnixTime(targetTime);
    Console.WriteLine(unixTime.ToString());
    // 出力例:1266864932

    Console.ReadLine();
  }

  // UNIXエポックを表すDateTimeオブジェクトを取得
  private static DateTime UNIX_EPOCH =
    new DateTime(1970, 1, 1, 0, 0, 0, 0);

  public static long GetUnixTime(DateTime targetTime)
  {
    // UTC時間に変換
    targetTime = targetTime.ToUniversalTime();

    // UNIXエポックからの経過時間を取得
    TimeSpan elapsedTime = targetTime - UNIX_EPOCH;
   
    // 経過秒数に変換
    return (long)elapsedTime.TotalSeconds;
  }
}

・VB.net

Module Module1

  Sub Main()

    ' 現在日時を表すDateTimeオブジェクトを取得
    Dim targetTime As DateTime = DateTime.Now
   
    Dim unixTime As Long = GetUnixTime(targetTime)
    Console.WriteLine(unixTime.ToString())
    ' 出力例:1266864932

    Console.ReadLine()

  End Sub

  ' UNIXエポックを表すDateTimeオブジェクトを取得
  Private UNIX_EPOCH As DateTime = _
    New DateTime(1970, 1, 1, 0, 0, 0, 0)

  Private Function GetUnixTime(ByVal targetTime As DateTime) As Long

    ' UTC時間に変換
    targetTime = targetTime.ToUniversalTime()

    ' UNIXエポックからの経過時間を取得
    Dim elapsedTime As TimeSpan = targetTime - UNIX_EPOCH

    ' 経過秒数に変換
    Return CType(elapsedTime.TotalSeconds, Long)

  End Function

End Module