2016-05-10 5 views
-3

привет, я пытаюсь получить дни между двумя датами. это мое кодирование:Как получить дни с 2-х дней php

<?php 
    $Cur_date = date("Y-m-d"); 
    $Warranty = intval($row_Recordset1['Hardware_warranty']); 
    $timestamp = strtotime($row_Recordset1['Pur_date']); 
    $newtimestamp = strtotime("+".$Warranty." years", $timestamp); 
    $newtimestamp = date('Y/m/d', $newtimestamp) ; 



    if($Cur_date< $newtimestamp) 
    { 
     $interval = $Cur_date->diff($newtimestamp); 
     echo "Valid"."\n\n\n".$interval->y . " years, " . $interval->m." months, ".$interval->d." days "." left"; 
    } 
    else if ($Cur_date > $newtimestamp) 
    { 
     echo "Expired" ; 
    } 
    ?> 

но пришла ошибка из:

Fatal error: Call to a member function diff() on string in C:\xampp\htdocs\Warranty\WarrantyStatus.php on line 155

пожалуйста, помогите мне спасибо

не дубликат How to calculate the difference between two dates using PHP?

я с другой проблема здесь, мне нужно что-то объявить заранее?

ответ

2

Ваша переменная $ Cur_date не является экземпляром класса DateTime, это всего лишь стандартная строка, поэтому она не содержит метода diff().

Попробуйте изменить декларацию:

$Cur_date = new DateTime("Y-m-d"); 

Кроме того, для того, чтобы использовать метод дифференциала() на $ newtimestamp, вам также необходимо преобразовать $ newtimestamp в объект DateTime. Чтобы использовать дату и время, отличные от «сейчас», вы должны использовать статический метод DateTime :: createFromFormat().

В вашем случае, это будет выглядеть примерно так:

$Warranty = intval($row_Recordset1['Hardware_warranty']); 
$timestamp = strtotime($row_Recordset1['Pur_date']); 
$newtimestamp = strtotime("+".$Warranty." years", $timestamp); 
$newtimestamp = DateTime::createFromFormat('Y/m/d', $newtimestamp); 

На данный момент, вы должны иметь возможность сравнить два объекта DateTime, и использовать метод дифференциала(), как вы хотели. Поскольку вы используете метод diff(), вы также можете использовать свойство «days» результирующего $ интервала вместо «d». Тебе решать.

Смотрите также:
http://php.net/manual/en/datetime.diff.php
http://php.net/manual/en/datetime.createfromformat.php

+0

хорошо TY так много сэра –

+0

Если это решение решить вашу проблему, если вы любезно могли пометить его как официальный ответ, что было бы здорово. Благодарю. – badandyomega