|
.NET TIPS
UNIX時間を求めるには?[C#、VB]
デジタルアドバンテージ 一色 政彦
2010/02/25 |
 |
|
時間データを取り扱う際に、「UNIX時間」が用いられることがある。UNIX時間とは、UTC(=協定世界時)の1970年1月1日00:00:00秒(=「UNIXエポック:UNIX Epoch」と呼ばれる)からの経過秒数のことである。
.NET FrameworkでUNIX時間を求める場合、専用のプロパティなどは提供されていないので、自ら計算して算出する必要がある。具体的には、対象の日時情報を表すDateTime構造体(System名前空間)のオブジェクトを作成し、そのToUniversalTimeメソッド(パラメータなし)を呼び出してUTC時間を表すDateTimeオブジェクトに変換する。次に、このUTC時間からUNIXエポックを差し引いた経過時間を表すTimeSpan構造体(System名前空間)のオブジェクトを取得する。最後に、TimeSpanオブジェクトのTotalSecondsプロパティを呼び出して、経過秒数を求めればよい。
以上の内容をコンソール・アプリケーションとして実装したのが、次のコードである。
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;
}
}
|
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 |
|
UNIX時間を求めるサンプル・プログラム(上:C#、下:VB) |
特に難しいところはないだろう。コード中にコメントを多く入れているので、コードの説明は割愛する。
カテゴリ:クラス・ライブラリ 処理対象:日付と時刻
使用ライブラリ:DateTime構造体(System名前空間)
使用ライブラリ:TimeSpan構造体(System名前空間)
関連TIPS:UTC(世界協定時)を取得するには? |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間