読者です 読者をやめる 読者になる 読者になる

PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやプランナーなども

【VBA】UNIX時間の求め方(エポック秒)【PHP】

こんにちは、PeaceJetです。
この度、PHPで書かれたプログラムをVBA上に落とし込まなければならないというプロジェクトが発生。
そこで、UNIX時間を求めなければならず、四苦八苦したので共有します。

PHPでのUNIX時間の求め方

<?php
echo Time()
?>
このとき出力されるのはUTC協定世界時

協定世界時(きょうていせかいじ、UTC, 英語: Coordinated Universal Time, ドイツ語: Koordinierte Weltzeit, フランス語: Temps Universel Coordonné)とは、国際原子時 (TAI) に由来する原子時系の時刻で、UT1 世界時に同調するべく調整された基準時刻を指す。

※引用のため一部修正

協定世界時 - Wikipedia


協定世界時で出力されていることから、GMTでもなければJSTでもありません。

グリニッジ平均時(グリニッジへいきんじ、イギリス英語: Greenwich Mean Time, GMT)とは、グリニッジ天文台グリニッジ子午線(経度0度)における平均太陽時(mean solar time)を指す。イギリスの標準時(standard time)は伝統的にこの名で呼ばれる。ただし日本では平均時ではなくグリニッジ標準時グリニッジひょうじゅんじ)と訳されることが多い。

かつて国際的な基準時刻および世界各地域の標準時の基準はグリニッジ平均時であったが、現在は概念を修正した協定世界時 (UTC) へ変更されている。

※引用のため一部修正

グリニッジ標準時 - Wikipedia

ちなみに、GMTUTCは100年で18秒間のズレが生じるそうです。

このことから、求める式に瑕疵があれば正確に計算できないので注意が必要です。

VBAでのUNIX時間は以下のように求める

DateDiff("s", "1970/1/1 00:00:00", Now()) - 32400

最後に引き算を行っている「32400」という数字は、日本との時差(9時間)を秒数で算出するためである。
9 * 60 * 60 = 32400 (秒)