2017-06-22 1 views
5

müssen Sie die Anzahl der Tage vom aktuellen Datum bis zum 27. eines jeden Monats in PHP berechnen In unten Code, es ist korrekt für den aktuellen Monat berechnen, aber wenn das aktuelle Datum 28. ist sollte für nächsten Monat berechnen.Wie berechnet man die Anzahl der Tage in jedem Monat in 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

Mögliche Duplikat [Suche nach der Anzahl der Tage zwischen zwei Terminen] (https : //stackoverflow.com/questions/2040560/finding-the-number-of-days-between -zwei Daten) –

Antwort

2

Ich schrieb dieses Skript schnell, weil ich noch nicht die Zeit habe es zu testen.

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

für zB, ist das heutige Datum 28, was bedeutet, dass es an den else Teil geht und es sollte das diff dieses Monats 28. zeigen bis nächsten Monat 27 jetzt zeigt es den negativen Wert .. :( –

+0

Überprüfen Sie meine Bearbeitung, sollte es jetzt funktionieren. – TripleDeal

5

Try php cal_days_in_month Funktion

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

Buddy Ich muss 27 bis 27. eines jeden Monats so Monat und Jahr sollte dynamisch sein –

-1

durch dieses ....

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

Try Code unten,

<?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

für zB, das heutige Datum ist 28, was bedeutet, dass es zum else Teil geht und es sollte den Diff dieses Monats vom 28. zum nächsten Monat zeigen. 27 –

+0

Ja es geht zum anderen Teil und zeigt '-1 Tag (e)' an. Wenn Sie keinen anderen Teil entfernen oder "0" als Intervall festlegen möchten. –

Verwandte Themen