我想在到期日的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
你能帮我吗?
答案 0 :(得分:3)
http://php.net/manual/en/function.strtotime.php
PHP的strtotime()函数的第二个参数需要一个Unix时间戳。试试这个:
$date=date('Y-m-d',strtotime($expdate.' +2 days'));
答案 1 :(得分:2)
strtotime函数有两个参数
int strtotime ( string $time [, int $now = time() ] )
第二个应该是一个整数,但看起来你传递的是一个字符串。 您需要先将其转换为整数。这应该有效:
$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
答案 2 :(得分:0)
您已要求在到期日前2天的某一天。
$date=date('Y-m-d',strtotime($expdate.'-2 days'));
答案 3 :(得分:0)
答案 4 :(得分:0)
更改以下行
$date=date('Y-m-d',strtotime('+2 days', $expdate));
以下
$date=date('Y-m-d',strtotime('-2 days', strtotime($expdate)));
strtotime第二个参数需要timestamp(不是字符串日期)。 “-2”在2天前完成。