1

私は周りを見回しましたが、データベースのレイアウトでうまく機能するものは何もありませんでした。基本的には、現在の時刻とあらかじめ決められたイベント時刻を取得し、現在の時刻がイベント時刻の 10 分前かどうかを確認する必要があります。これは私のテスト ファイルです。現在の時刻を変数に取得し、データベース テーブルから eventTime を取得し、イベント時刻を変数に設定し、イベント時刻から現在の時刻を減算して、差を出力します。問題は、分が必要なことです。時間だけが出力されます。

たとえば、11:00 - 9:15 は 1 を返します。105 (分数) と言うには 1 が必要です。

データベースはイベント時間を 24 時間形式で時間と分 (例: 13:01) で保存し、現在の時刻は date("H:i") を使用して PHP で同じ形式で設定されます。

ここにいくつかのテスト コードがあります。インクルード dbconnect.php は、データベースに接続する方法です。

ご協力いただきありがとうございます。

 <?php
include 'dbconnect.php';

$the_time = date('H:i');
echo $the_time." </br></br>";

$sql="SELECT eventTime FROM events";
$result=$conn->query($sql);

while ($row = $result->fetch_assoc()) {
$new_time=$row['eventTime'];

echo $new_time."New Time</br>";
echo $the_time-$new_time."The Difference</br></br>";
}
?>

Gamster Katalin と John Conde のおかげで解決しました。作業コードは次のとおりです。

<?php
include 'dbconnect.php';

date_default_timezone_set('America/New_York');
$the_time = date('H:i');
echo $the_time." </br></br>";

$sql="SELECT eventTime FROM events";
$result=$conn->query($sql);

while ($row = $result->fetch_assoc()) {
$new_time=$row['eventTime'];

echo $new_time."New Time</br>";
$datetime1 = new DateTime($the_time);
$datetime2 = new DateTime($new_time);
$interval = $datetime1->diff($datetime2);
$hours=$interval->format('%h');
$minutes= $interval->format('%i');
echo $hours." The Difference in Hours</br>".$minutes." The Difference in Minutes</br></br>";
}
?>
4

2 に答える 2

1

MySQL はそのようなことに対して非常に強力であることを忘れないでください。

SELECT CURTIME() AS currentTime, 
       eventTime, 
       TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference 
FROM events;

または、違いだけを取得するには:

SELECT TIME_FORMAT(CURTIME() - TIME(eventTime), '%h:%i' ) AS difference 
FROM events;
于 2013-04-28T18:37:51.237 に答える