2015-04-30 2 views
0

У меня есть две строковые значения, такие как «24/10/2015» и «23/10/2015», и они являются динамическими значениями. И мне нужен счет ночи между этими двумя значениями, поэтому я пытаюсь использовать date_diff, но я не мог управлять им. Я попытался strtotime, date_create_from_format и т. Д., Но это не сработало. Любой совет?Как использовать функцию date_diff со строковыми значениями

Пример кода:

$checkout = $_COOKIE['cout']; 
$checkin = $_COOKIE['cin']; 
$nights = date_diff(strtotime($checkout),strtotime($checkin)); 
+0

Итак, где мы с этим вопросом? (FYI: Вы можете принять ответ, как вам больше всего помогли и решили вашу проблему (http://meta.exekchange.com/q/5234)!) – Rizier123

ответ

2

Это должно работать для вас:

Просто создайте DateTime объект с DateTime::createFromFormat(), а затем вы можете получить разницу с diff(), как это:

<?php 

    $dateOne = "24/10/2015"; 
    $dateTwo = "23/10/2015"; 

    $dateOne = DateTime::createFromFormat("d/m/Y", $dateOne); 
    $dateTwo = DateTime::createFromFormat("d/m/Y", $dateTwo); 
    $interval = $dateOne->diff($dateTwo); 
    echo $interval->format("%d " . ($interval->d > 1 || $interval->d == 0?"nights":"night")); 

?> 

мощность:

1 night 

Demo

+0

Это работает, спасибо –

+0

@ EmreGerçek Добро пожаловать! – Rizier123

0

Он может быть использован, как это в PHP:

$date1=date_create("2013-03-15"); 
$date2=date_create("2013-12-12"); 
echo date_diff($date1,$date2); 

Если вы не имеете даты в правильном формате, используемом дата ПГПС() функции

0
Try this one to solve your problem 

/****Code Start*****/ 
<?php 
$checkout = $_COOKIE['cout']; 
$checkin = $_COOKIE['cin']; 
$diff = abs(strtotime($checkout) - strtotime($checkin)); 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 
printf("%d years, %d months, %d days\n", $years, $months, $days); 
?> 

/****Code End*****/ 
+0

Кажется, очень много кода для чего-то действительно простого ИМО – Jacta

0

Попробуйте это

$checkout = date_create("2015-10-12"); 
$checkin = date_create("2015-10-05"); 
$nights = date_diff($checkout,$checkin); 

print_r($nights); 

вы получите массив объектов, как это,

DateInterval Object 
(
    [y] => 0 
    [m] => 0 
    [d] => 7 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [weekday] => 0 
    [weekday_behavior] => 0 
    [first_last_day_of] => 0 
    [invert] => 1 
    [days] => 7 
    [special_type] => 0 
    [special_amount] => 0 
    [have_weekday_relative] => 0 
    [have_special_relative] => 0 
) 
1

Вот решение.

$checkout = $_COOKIE['cout']; 
$checkin = $_COOKIE['cin']; 
$datediff = strtotime($checkout) - strtotime($checkin); 
$night = floor($datediff/(60*60*24)); 
Смежные вопросы