के बीच दिन प्राप्त करें यदि मेरे पास दो चर $startDate="YYYYmmdd"
और $endDate="YYYYmmdd"
हैं, तो मैं उनके बीच दिनों की संख्या कैसे प्राप्त कर सकता हूं?PHP प्रारंभ तिथि और समाप्ति तिथि
धन्यवाद।
के बीच दिन प्राप्त करें यदि मेरे पास दो चर $startDate="YYYYmmdd"
और $endDate="YYYYmmdd"
हैं, तो मैं उनके बीच दिनों की संख्या कैसे प्राप्त कर सकता हूं?PHP प्रारंभ तिथि और समाप्ति तिथि
धन्यवाद।
आप PHP 5.3 का उपयोग कर रहे हैं, तो आप नए DateTime
वर्ग का उपयोग कर सकते हैं:
$startDate = new DateTime("20101013");
$endDate = new DateTime("20101225");
$interval = $startDate->diff($endDate);
echo $interval->days . " until Christmas"; // echos 73 days until Christmas
यदि नहीं, तो आपको strtotime
का उपयोग करने की आवश्यकता होगी:
$startDate = strtotime("20101013");
$endDate = strtotime("20101225");
$interval = $endDate - $startDate;
$days = floor($interval/(60 * 60 * 24));
echo $days . " until Christmas"; // echos 73 days until Christmas
नया डेटटाइम, डेटटाइम इंटरवल, डेटटाइम अवधि और डेटटाइमज़ोन-क्लासेस बस रॉक। मैंने उनके साथ कुछ अनुभव भी बनाया। मुझे लगता है कि यह स्ट्रेटोटाइम से बेहतर है, क्योंकि यह लीप-साल, लीप-सेकोंट इत्यादि मानता है तो आपके लिए +1। मैंने इस पोस्ट में एक और विस्तृत उदाहरण भी दिया: http://stackoverflow.com/questions/3108591/calculate-number-of-hours-between-2-dates-in-php/3108800#3108800 –
धन्यवाद, lonesomeday। – Francisc
$DayDiff = strtotime("2010-01-12")-strtotime("2009-12-30");
echo date('z', $DayDiff)." Days";
यह एक सटीक और पीएचपी साथ प्रयोग करने योग्य होना चाहिए < 5.2
यहाँ नमूना कोड है
$startDate = mktime(0,0,0,1,1,2010);
$endDate = mktime(0,0,0,12,1,2010);
$dateDiff = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
echo "Differernce is $fullDays days";
<?php
$time1=strtotime($startDate);
$time2=strtotime($endDate);
$daycount=floor(($time2-$time1)/ 86400);
?>
<?php
function days($date1, $date2) {
$date1 = strtotime($date1);
$date2 = strtotime($date2);
return ($date2 - $date1)/(24 * 60 * 60);
}
$date1 = '20100820';
$date2 = '20100930';
echo days($date1, $date2);
?>
सबसे आसान तरीका है मैं उन दोनों के बीच दिनों की संख्या प्राप्त करने के लिए मिल गया है यूनिक्स टाइमस्टैम्प करने के लिए आरंभ और समाप्ति तिथियां परिवर्तित करने और उन पर एक घटाना करने से है।
फिर यदि आप तारीख को प्रारूपित करना चाहते हैं तो इसे PHP दिनांक फ़ंक्शन का उपयोग करके वापस परिवर्तित करें।
अधिकांश मामलों में क्रूर खोज के आधार पर मेरा दृष्टिकोण यहां है, क्योंकि उदाहरण के लिए लीप वर्षों के साथ काम करते समय सेकंड्स (सप्ताह, महीनों, वर्षों के लिए) के आधार पर विभाजन सटीक परिणाम नहीं लौटा सकते हैं।
<?php
function datediff($timeformat, $startdate, $enddate)
{
$unix_startdate = strtotime($startdate) ;
$unix_enddate = strtotime($enddate) ;
$min_date = min($unix_startdate, $unix_enddate);
$max_date = max($unix_startdate, $unix_enddate);
$Sd = date("d", $unix_startdate) ;
$Sm = date("m", $unix_startdate) ;
$Sy = date("Y", $unix_startdate) ;
$Ed = date("d", $unix_enddate) ;
$Em = date("m", $unix_enddate) ;
$Ey = date("Y", $unix_enddate) ;
$unixtimediff = $unix_enddate - $unix_startdate ;
if ($unixtimediff <= 0) return -1 ;
switch(strtolower($timeformat))
{
case "d": // days
$divisor = 3600 * 24 ;
return floor($unixtimediff/$divisor) + 1 ;
break ;
case "w": // weeks
$i = 0 ;
while (($min_date = strtotime("+1 DAY", $min_date)) <= $max_date) $i++;
return floor($i/7) ;
break ;
case "m": // months
$i = $Sd != $Ed && $Sm != $Em ? 1 : 0 ;
while (($min_date = strtotime("+1 MONTH", $min_date)) <= $max_date) $i++;
return $i ;
break ;
case "q": // quaterly (3 months)
$i = $Sd != $Ed && $Sm != $Em ? 1 : 0 ;
while (($min_date = strtotime("+3 MONTH", $min_date)) <= $max_date) $i++;
return $i ;
break ;
case "y": // year
$i = $Sd != $Ed && $Sm != $Em ? 1 : 0 ;
while (($min_date = strtotime("+1 MONTH", $min_date)) <= $max_date) $i++;
return floor($i/12) ;
break ;
}
}
$startdate = "2014-01-01" ;
$enddate = "2015-12-31" ;
$formats = array("d" => "days", "w" => "weeks", "m" => "months", "q" => "quaterly", "y" => "years") ;
foreach($formats AS $K => $F)
echo "From $startdate to $enddate in $F format: ". datediff("$K", $startdate, $enddate)."<br>" ;
?>
अगर आप समावेशी या दो तिथियों के अनन्य दिनों की संख्या को इंगित करें। – stillstanding
शुरुआत और अंत सहित, धन्यवाद। – Francisc