2017-06-22 16 views
5

trzeba obliczyć liczbę dni od bieżącej daty do 27 dnia każdego miesiąca w PHP W poniższym kodzie obliczane jest poprawnie dla bieżącego miesiąca, ale jeśli bieżąca data to 28. to powinien obliczyć na następny miesiąc.Jak obliczyć liczbę dni w każdym miesiącu w php

$year = date("y"); 
$month = date("m"); 
$day = '27'; 

$current_date = new DateTime(date('Y-m-d'), new DateTimeZone('Asia/Dhaka')); 
$end_date = new DateTime("$year-$month-$day", new DateTimeZone('Asia/Dhaka')); 
$interval = $current_date->diff($end_date); 
echo $interval->format('%a day(s)'); 
+1

Możliwy duplikat [Znajdowanie liczby dni pomiędzy dwiema datami] (https : //stackoverflow.com/questions/2040560/finding-the-number-days-between -twojego) –

Odpowiedz

2

Napisałem ten skrypt szybko, ponieważ nie mam czasu, aby go przetestować.

EDIT:

$day = 27; 
$today = date('d'); 

if($today < $day){ 
    $math = $day - $today; 
    echo "There are " . $math . " days left until the 27th."; 
} else { 
    $diff = date('t') - $today; 

    $math = $diff + $day; 
    echo "There are " . $math . " days left until the 27th of the next month."; 
} 
+0

dla np. dzisiejsza data to 28. co oznacza, że ​​idzie do drugiej strony i powinna pokazywać różnicę w tym miesiącu 28 do następnego miesiąca 27 teraz pokazuje ujemną wartość .. :( –

+0

Sprawdź moją edycję, powinna teraz działać. – TripleDeal

5

Spróbuj php cal_days_in_month funkcja

cal_days_in_month — Return the number of days in a month for a given year and calendar 

Ex:

$number = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31 
echo "There were {$number} days in August 2003"; 

Reference

+0

kolego muszę obliczyć 27 do 27 dnia każdego miesiąca, więc miesiąc i rok powinien być dynamiczny –

-1

przez to ....

<?php 
    $d=cal_days_in_month(CAL_GREGORIAN,10,2005); 
    echo "There was $d days in October 2005"; 
?> 
1

Spróbuj poniżej kod,

<?php 
    $year = date("y"); 
    $month = date("m"); 
    $day = '27'; 

    $current_date = new DateTime(date('Y-m-d'), new DateTimeZone('Asia/Dhaka')); 
    $end_date = new DateTime("$year-$month-$day", new DateTimeZone('Asia/Dhaka')); 
    if($current_date->getTimestamp()<=$end_date->getTimestamp()){ 
     $interval = $current_date->diff($end_date); 
     echo $interval->format('%a day(s)'); 
    } 
    else{ 
     $interval = $end_date->diff($current_date); 
     echo $interval->format('-%a day(s)'); 
    } 
?> 
+0

dla, na przykład, dzisiejsza data to 28, co oznacza, że ​​idzie do drugiej części i powinna pokazywać różnicę w tym miesiącu 28. do następnego miesiąca 27. –

+0

Tak, przechodzi do innej części i wyświetla '-1 dnia (dni)'. Jeśli nie chcesz usunąć innej części lub ustaw "0" jako interwał. –

Powiązane problemy