人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。

現在日にちの引き算をしたいと考えています。

PHP画面上で処理のボタンを押すと 今日の日付を変数に入れて

その変数とデータベースに入っている値を引き算するというものです。

例)

テーブル名:TABLE

項目名 DATETIME

項目DATETIMEの一行目に入っている値 2009-08-15 22:58:25

今日の日付 2008-08-13 22:57:24

表示したい値:後2日と1分と1秒です。

上記の場合どのようなスクリプトを組めばいいでしょうか?

自分でも一応作ってみたのですがエラーが出てしまったため、
わかるかたおりましたらご指摘いただければと考えております。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:2009-08-15 24 PHP エラー スクリプト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●100ポイント ベストアンサー

テーブルから取り出した日時を $d1 に、今日の日付を $d2 に代入したとします。

$d1 >= $d2 であるという前提です。

下記のようなスクリプトでできます。


なお、ご質問の「今日の日付」は2008年になっていました。下記ではそのままにしてあります。

<?php
$d1 = '2009-08-15 22:58:25';
$d2 = '2008-08-13 22:57:24';

//定数
define("SECMINUITE", 60); //1分(秒)
define("SECHOUR", 60 * 60); //1時間(秒)
define("SECDAY", 60 * 60 * 24); //1日(秒)
define("SECWEEK", 60 * 60 * 24 * 7); //1週(秒)
define("SECMONTH", 60 * 60 * 24 * 30); //1月(秒)
define("SECYEAR", 60 * 60 * 24 * 365); //1年(秒)

$dt = strtotime($d1) - strtotime($d2);

$yy = (int)($dt / SECYEAR);
$dt -= $yy * SECYEAR;
$mm = (int)($dt / SECMONTH);
$dt -= $mm * SECYEAR;
$dd = (int)($dt / SECDAY);
$dt -= $dd * SECDAY;
$hh = (int)($dt / SECHOUR);
$dt -= $hh * SECHOUR;
$nn = (int)($dt / SECMINUITE);
$dt -= $nn * SECMINUITE;

if ($yy != 0) echo $yy . '年';
if ($mm != 0) echo $mm . '月';
if ($dd != 0) echo $dd . '日';
if ($hh != 0) echo $hh . '時';
if ($nn != 0) echo $nn . '分';
if ($dt != 0) echo $dt . '秒前';
?>
◎質問者からの返答

ご回答ありがとうございます。

実行できました。

後大変申し訳ないのですが、引き算した値を秒数に変換して変数に格納するにはどのようにすればいいでしょうか?

その値を元に昇順、降順に出来れば並び替えたいと考えています。


2 ● kn1967
●35ポイント

計算も並び替えもMySQLの持っている機能を用いるほうが格段に効率が良いです。

(php側でプログラムを組むのは、面倒なだけでなく、処理時間も多くかかる場合もあります)

$day=Date("Y-m-d H:i:s");
$sqlstr = "
 SELECT *, TIMEDIFF('$day', `DATETIME`) AS a
 FROM TEST
 ORDER BY `DATETIME`
";
$sql=mysql_query($sqlstr);
while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {
 echo $row["a"];
}

逆順に並べたい場合は項目名にDESCをつけます。

 ORDER BY `DATETIME` DESC

あと何日と何時間何分という形への整形はpahoo氏の回答を参考にして付け加えてください。

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ