UNIX時間(エポック秒)変換関数

UNIX時間(エポック秒)変換関数

はてなダイアリーの時刻付き見出し記法など、データ管理に使われることのあるUNIX時間。

メモアプリの移行などで表記の変換が必要になることがあるので、YYYYMMDDHH24MISS形式(年月日時分秒を繋げた14桁の数字)との相互変換関数を作ってみた。

UnixTime(ut := "", mode := 0) {
	; 例)
	; UnixTime(20130804185000) ==> 1375609800
	; UnixTime(1375609800, 1)  ==> 20130804185000
	If mode = 0
	{
		ut := ut ? ut : A_Now
		ut -= 19700101090000, Seconds
		Return, ut
	}
	Else
	{
		st := 19700101090000
		ut := ut ? ut : Return A_Now
		st += ut, Seconds
		Return, st
	}
}

一応説明すると、以下の様な機能。

  • UnixTime(YYYYMMDDHH24MISS, 0)でその日時のUNIX時間を返す
  • UnixTime(UNIXTIME, 1)でそのUNIX時間の日時を返す
  • 二つの引数はいずれも省略可
    • 第1引数を省略すると現在のYYYYMMDDHH24MISS形式での現在時刻が入る
    • 第2引数を省略すると日時からUNIX時間への変換になる

なので、UnixTime()と書けば現在時刻のUNIX時間が取得できる。

ちなみに、取得できるUNIX時間は日本時刻になっているので、海外のソフトなんかで出力したUNIX時間を変換する場合には、9時間分のズレが生じる可能性がある。その場合は、"19700101090000"を"19700101000000"に直して使う。