Рассчитать количество дней между двумя указанными датами - PullRequest
1 голос
/ 06 июня 2011

Может кто-нибудь исправить ошибку в моем скрипте, чтобы вычислить количество дней между двумя датами.Даты вводятся через форму, информация о переменной выглядит следующим образом:

[departon] => Array ( [0] => 1 [1] => June [2] => 2011 )     
[returnon] => Array ( [0] => 31 [1] => June [2] => 2011 ) 

Я написал код для вычисления этих дат, но он не рассчитывает день, он просто выводит 0.

<?php
$first_date = mktime(12, 0, 0, $_POST['departon'][1], $_POST['departon'][0], $_POST['departon'][2]); 
$second_date = mktime(12, 0, 0, $_POST['returnon'][1], $_POST['returnon'][0], $_POST['returnon'][2]);
$days = $second_date-$first_date;
echo floor($days/60/60/24) . " days"; 
?>

Помощь будет высоко ценится.

Ответы [ 3 ]

3 голосов
/ 06 июня 2011

Самый простой способ - использовать datetime.

Учтите это:

var_dump(new DateTime('1 July 2007'));

$a = new DateTime('1 July 2007');
$b = new DateTime('1 June 2001');

var_dump($a->diff($b));

var_dump позволит вам увидеть различное время, которое вы можете извлечь из него.

object(DateInterval)[3]
  public 'y' => int 6
  public 'm' => int 1
  public 'd' => int 0
  public 'h' => int 0
  public 'i' => int 0
  public 's' => int 0
  public 'invert' => int 1
  public 'days' => int 2221

Вы можете очень легко преобразовать свой массив в дату, используя

$date = new DateTime(join(" ",$array));
$date2 = new DateTime(join(" ",$array2));
$diff = $date->diff($date2);
2 голосов
/ 06 июня 2011

Вот простой способ:

$depart = strtotime(implode(' ', $_POST['departon']));
$return = strtotime(implode(' ', $_POST['returnon']));

$diff = floor(($return - $depart) / (60 * 60 * 24));

Примечание: в июне всего 30 дней.

1 голос
/ 06 июня 2011

В документации mktime указывается число месяца, поэтому вам нужно преобразовать значение "июнь" в "6".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...