0

Я новичок в CakePHP, и у меня проблема. Я должен проверить 2 даты (date_start & date_end). Date_end должен быть не менее 30 дней позже даты_старта. Я немного смущен тем, как написать функцию для разницы дат. Я не знаю, какие параметры я должен добавить и как их найти из переменной $ validate. Я также добавил еще одно подтверждение для дат, которое сообщает date_end, должно быть позже даты_старта, и оно работает. Вот это код валидаций:Разница между двумя датами проверки в cakephp

public $validate = array(
    'user_id' => array(
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
    'name' => array(
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 

    'date_start' => array(
     'rule' => 'date', 
     'message' => 'Enter a valid date' 
    ), 

    'date_end' => array(
    'date' => array(
     'rule' => array('date'), 
     'message' => 'The date must be valid'), 
    'dates' => array(
     'rule' => 'dates', 
     'message' => 'The end date must be later tha start date'), 
), 

); 

public function dates(){ 

    if($this->data['Lesson']['date_end'] > $this->data['Lesson']['date_start']){ 
     return true; 
    } 
    else{ 
     return false; 
    } 

} 

public function date_diff($date_start, $date_end){ 



} 

Вы знаете код я должен написать в функции date_diff?

Спасибо!

+0

возможно дубликат (http://stackoverflow.com/questions/676824/how-to- calculate-the-difference-between-two-dates-using-php) – ndm

+0

Нет никакой встроенной функции для сравнения дат, только число equalTo, больше или меньше. Вам нужно будет создать собственное правило проверки, которое может либо сравнить время эпохи, либо объект DateTime. – thepratt

+0

@ndm Это не дубликат, поскольку он хочет сделать это с помощью проверки CakePHP, а не просто сравнивать даты. – thepratt

ответ

0

Большое спасибо @ndm и другие ребята, конечно, за помощь. Я написал этот код в функции Diff, и она работала: [? Как вычислить разницу между двумя датами с использованием PHP]

public function date_diff($check1,$ckeck2){ 
    $check1 = $this->data['Lesson']['date_start']; 
    $check2 = $this->data['Lesson']['date_end']; 
    $diff = abs(strtotime($check2) - strtotime($check1)); 
    if($diff >= 2592000){ 
     return true; 
    } 
    else 
     return false; 



} 

 Смежные вопросы

  • Нет связанных вопросов^_^