-1

有効期限の2日前の日付を取りたいです。MYSQL データベースから有効期限を取得しています。これが私のコードです:

$result=mysql_query("SELECT * from assets");

while($row=mysql_fetch_array($result))
{

echo "Start date:".$row["start_date"];

echo "Expiry date:".$row["expiry_date"];

$expdate=$row["expiry_date"];

$date=date('Y-m-d',strtotime('+2 days', $expdate));

echo "2 Days before Expiry date:".$date;

}

しかし、私は次のような出力を得ています:

Start date:2012-05-01

Expiry date:2012-06-30

2 Days before Expiry date:1970-01-03 

助けてください。

4

5 に答える 5

3

http://php.net/manual/en/function.strtotime.php

PHPのstrtotime()関数の2番目の引数は、Unixタイムスタンプを想定しています。代わりにこれを試してください:

$date=date('Y-m-d',strtotime($expdate.' +2 days'));
于 2012-06-13T11:04:46.623 に答える
2

strtotime関数は2つのパラメーターを取ります

int strtotime ( string $time [, int $now = time() ] )

2番目は整数である必要がありますが、文字列を渡しているように見えます。最初に整数に変換する必要があります。これは機能するはずです:

$expdate_int = strtotime($expdate);
$date = date('Y-m-d', strtotime('+2 days', $expdate_int));

必要に応じて、SQLで日付計算を行うことも検討できます。

SELECT expdate, DATE_SUB(expdate, INTERVAL 2 DAY) AS two_days_before_exp
于 2012-06-13T11:11:37.093 に答える
0

有効期限の2日前の日をリクエストしました。

  $date=date('Y-m-d',strtotime($expdate.'-2 days'));
于 2012-06-13T11:07:17.510 に答える
0
strtotime('+2 days', $expdate)

2番目の引数はタイムスタンプである必要があります

http://php.net/strtotime

于 2012-06-13T11:07:46.907 に答える
0

次の行を変更します

$date=date('Y-m-d',strtotime('+2 days', $expdate));

次へ

$date=date('Y-m-d',strtotime('-2 days', strtotime($expdate)));

strtotime の 2 番目のパラメーターにはタイムスタンプが必要です (文字列の日付ではありません)。2日前にする場合は「-2」。

于 2012-06-13T11:27:47.087 に答える