3

2 つの日付を減算するコードを書いています。これは契約タイプのもので、ユーザーは契約が完了するまでの残り日数を確認できます。のようなものstart_date_time="today"と、データベースからend_date_time=y 値が取得される場所(DATETIME 型)。yこれは、mysql の日時形式 ( yyyy-mm-dd HH:mm:ss) です。

<?php
include_once '../include/connections.php';
$id =$_REQUEST['uid'];
$result= mysql_query("SELECT * FROM data WHERE uid  = '$id'");
$test = mysql_fetch_array($result);
echo $test[14];
echo "<br /><br />";
$today=time();
$enddate=strtotime('$test[14]');
$timediff = $enddate - $today;
$days=intval($timediff/86400);
$remaining=$timediff%86400;
$hours=intval($remaining/3600);
$remaining=$remaining%3600;
$mins=intval($remaining/60);
$secs=$remaining%60;
echo "<br>".$days.' days '.$hours.' hours '.$mins.' minutes and '.$secs.' seconds.';
?>

echo $test[14];は、データベースに保存されている日付と時刻を取得します ( 2012-09-26 00:00:00)

その後echo $today;、この形式で取得します1348381896。さて、この形式をデータベースから取得した形式に変換して、2 つの日付を減算し、残りの日数と時間を取得するにはどうすればよいですか?

4

2 に答える 2

4

これらの 2 つの関数を使用して、日付を相互に変換できます。

MySQL 日時へのタイムスタンプにこれを使用します。

$timestamp = '1348381896';
$date = date('Y-m-d H:i:s', $timestamp);
echo $date;

これをMySQLの日時からタイムスタンプに使用します:

$date = '2012-09-26 00:00:00';
$timestamp = strtotime($date);
echo $timestamp;

また、MySQL 側で日付を減算したい場合は、DATEDIFFまたはTIMEDIFF関数を使用できます。

また、 TIMESTAMPDIFFおよびUNIX_TIMESTAMP関数を使用して、MySQL でもタイムスタンプを操作できます ...

于 2012-09-23T06:55:55.753 に答える
0

これには PHP のDateTimeクラスを使用できます。

$today = new DateTime();

$mysqlDate = "2012-12-15 13:40:20"; //for example
// To match your code this would be $mysqlDate = $test[14];
$mysqlFormat = 'Y-m-d H:i:s';

$endDate = DateTime::createFromFormat($mysqlFormat, $mysqlDate);
$diff = $today->diff($endDate);
echo "You have {$diff->d} days, {$diff->h} hours and {$diff->m} minutes left";

これにより、次の出力が得られます。

あと 22 日と 6 時間 5 分あります

(これは、コードをいつ実行するかによって変わります)。

$diffDateIntervalのインスタンスです。

DateTime::createFromFormat() で使用できる日付形式は、ここにあります http://www.php.net/manual/en/function.date.php

于 2012-09-23T07:43:17.567 に答える