phpプログラムでUNIXタイムスタンプを操作することがあったので、簡単なプログラムを作成しました。
OSの2038年問題を調べるツールにも使えると思います。たとえば、UNIXタイムの欄に2147483648 を入力した場合、2038/01/19 12:14:08 となれば、time_t型が、64bitに拡張されていますので、そのシステムとphp処理系は問題ないと思われます。
ちなみにこのサーバは、32bitのlinuxですので、未対応でした。
時刻がUTCかJSTかは、OSのロケールに依存すると思いますので、UNIXタイムに0 を入力したとき、1970/01/01 09:00:00 となれば、JST。1970/01/01 00:00:00 ならUTCです。
ソースコード phpTime.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>UNIXタイムスタンプ・コンバータ</title> </head> <body> <?php $unix = $_POST['unix']; $string = $_POST['string']; // タグの埋め込みを無効化する。 $unix = htmlspecialchars($unix); $string = htmlspecialchars($string); if(empty($unix)) $unix = 0; if(empty($string)) $string = strftime('%Y/%m/%d %H:%M:%S', 0); if(isset($_POST['UtoS'])){ // unixタイムスタンプから日付の文字列表示 $string = strftime('%Y/%m/%d %H:%M:%S', $unix); $wareki = warekiHenkan($unix); } if(isset($_POST['StoU'])){ // 日付の文字列表示からunixタイムスタンプ $unix = strtotime($string); $wareki = warekiHenkan($unix); } if(isset($_POST['Now'])){ // 日付の文字列表示からunixタイムスタンプ $unix = time(); $string = strftime('%Y/%m/%d %H:%M:%S', $unix); $wareki = warekiHenkan($unix); } function warekiHenkan($u){ // $u: unixタイムスタンプ // 返値: 和暦の文字列 $ul = localtime($u, TRUE); $ul["tm_year"] = $ul["tm_year"] + 1900; $ul["tm_mon"] = $ul["tm_mon"] + 1; if($u < -1812186000){ // 明治かそれ以前 $s = "明治" . ($ul["tm_year"] - 1867); }else if($u < -1357635600){ // 大正 $s = "大正" . ($ul["tm_year"] - 1911); }else if($u < 600188400){ // 昭和 $s = "昭和" . ($ul["tm_year"] - 1925); }else{ // 平成 $s = "平成" . ($ul["tm_year"] - 1988); } return sprintf("%s年%d月%d日 %d時%d分%d秒", $s,$ul["tm_mon"],$ul["tm_mday"],$ul["tm_hour"],$ul["tm_min"],$ul["tm_sec"]); } ?> <p>unixタイムスタンプと日付の文字列表示を相互変換します。</p> <p> 1901(明治34年)/12/14 05:45:52 (-2147483648) 以前の日時はエラーとなります。<br /> 2038(平成50年)/01/19 12:14:07 ( 2147483647) 以降の日時はエラーとなります。<br /> もしエラーにならない場合、2038年問題に対応したシステムかつphpプログラムと思われます。<br /> <br /> 1868/09/08 から 1912/07/29 = 明治元年から明治 45 年<br /> 1912/07/30 から 1926/12/24 = 大正元年から大正 15 年<br /> 1926/12/25 から 1989/01/07 = 昭和元年から昭和 64 年<br /> 1989/01/08 から現在 = 平成元年から現在 </p> <form action="phpTime.php" method="POST"> <table cellspacing="8"> <tr> <td> unixタイムスタンプ: </td> <td> </td> <td> 日付の文字列表示: </td> </tr> <tr valign="top"> <td> <input type="text" name="unix" size="20" value="<?= $unix ?>" /> </td> <td align="center"> <input type="submit" name="UtoS" value="→" style="width:3em;" /><br /><br /> <input type="submit" name="StoU" value="←" style="width:3em;" /><br /><br /> <input type="submit" name="Now" value="現在時刻" /> </td> <td> <input type="text" name="string" size="20" value="<?= $string ?>" /><br /> <br />和暦:<br /><?= $wareki ?><br /> </td> </tr> </table> </form> </body> </html>