php

2012-01-04 5 views
85

में दो तिथियों की तुलना कैसे करें यदि दिनांक '03_01_12' और '31_12_11' प्रारूप में हैं तो PHP में दो तिथियों की तुलना कैसे करें।php

मैं इस कोड का उपयोग कर रहा हूँ:

$date1=date('d_m_y'); 
$date2='31_12_11'; 
if(strtotime($date1) < strtotime($date2)) 
    echo '1 is small ='.strtotime($date1).','.$date1; 
else 
    echo '2 is small ='.strtotime($date2).','.$date2; 

लेकिन इसके काम नहीं कर रहा ..

+0

के संभावित डुप्लिकेट का प्रयास करें [तुलना करें php में दिनांक कैसे?] (Http://stackoverflow.com/questions/2902360/how-to-compare-dates-in-php) –

+0

स्ट्रेटोटाइम ('+ 24 घंटे') – Ghostman

+0

[डुप्लिकेट तिथि] की संभावित डुप्लिकेट (http://stackoverflow.com/questions/2113940/php-compare-date) –

उत्तर

31

आप यह सुनिश्चित करें कि अपनी तिथियाँ मान्य दिनांक वस्तुओं रहे हैं बनाने के लिए करना होगा।

इस प्रयास करें:

$date1=date('d/m/y'); 
$tempArr=explode('_', '31_12_11'); 
$date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2])); 

फिर आप प्रदर्शन कर सकते हैं अंतर पाने के लिए strtotime() विधि।

+0

str_replace क्यों नहीं? –

105

आपका कोष्ठक सभी मिलान नहीं हैं:

if(strtotime($date1))<strtotime($date2))) 

यह करने के लिए परिवर्तित करें:

if(strtotime($date1) < strtotime($date2)) 
+0

गूंज दिनांक ('वाईएमडी एच: आई: एस', strtotime ('31_01_11')); 1 9 70-01-01 01:00:00 देता है, जो सही काम नहीं करेगा, या कुछ जादू रूपांतरण हैं? – devdRew

+0

@devdRew: इसे आजमाएं, गूंज दिनांक ('y-m-d एच: i: s', strtotime ('31 -01-11 ')); –

+1

सवाल यह था कि यदि दिनांक '03_01_12' और '31_12_11' प्रारूप में हैं तो php में 2 तिथियों की तुलना कैसे करें मैं इस कोड का उपयोग कर रहा हूं: यही कारण है कि मैंने वहां 31_12_11 रखा, और इसलिए मैंने जादू रूपांतरणों के बारे में पूछा। – devdRew

2

परिणाम की तुलना करें समय से प्रत्येक के लिए maketime() की

3

पता नहीं है कि तुम क्या समस्या हो लेकिन है:

function date_compare($d1, $d2) 
{ 
    $d1 = explode('_', $d1); 
    $d2 = explode('_', $d2); 

    $d1 = array_reverse($d1); 
    $d2 = array_reverse($d2); 

    if (strtotime(implode('-', $d1)) > strtotime(implode('-', $d2))) 
    { 
     return $d2; 
    } 
    else 
    { 
     return $d1; 
    } 
} 
34

DateTime::createFromFormat का उपयोग करना:

$format = "d_m_y"; 
$date1 = \DateTime::createFromFormat($format, "03_01_12"); 
$date2 = \DateTime::createFromFormat($format, "31_12_11"); 

var_dump($date1 > $date2); 
+0

डी # एम # वाई का उपयोग करते समय, समर्थित सेपरेटर्स में से कोई भी;;:,,,,,, /,।, ,, -' काम करेगा। – Rijk

+5

@Rijk - लेकिन अंडरस्कोर नहीं। – nevvermind

4

आप की तरह कुछ की कोशिश कर सकते हैं: फिर आप की तरह इस $ dateDiff-> d दिनों में अंतर का उपयोग कर सकते

 $date1 = date_create('2014-1-23'); // format of yyyy-mm-dd 
     $date2 = date_create('2014-2-3'); // format of yyyy-mm-dd 
     $dateDiff = date_diff($date1, $date2); 
     var_dump($dateDiff); 

;

+0

हे! धन्यवाद, इसमें ']' चरित्र में थोड़ा सा टाइपो सही था? एंटर कुंजी के करीब, मैंने इसे भी दबाया होगा। देखने के लिए धन्यवाद। –

2

मुझे पता है कि यह देर हो चुकी है, लेकिन भविष्य के संदर्भ के लिए, दिनांक प्रारूप को str_replace का उपयोग कर एक मान्यता प्राप्त प्रारूप में डालें, फिर आपका फ़ंक्शन काम करेगा। (अंडरस्कोर को डैश के साथ प्रतिस्थापित करें)

//change the format to dashes instead of underscores, then get the timestamp 
$date1 = strtotime(str_replace("_", "-",$date1)); 
$date2 = strtotime(str_replace("_", "-",$date2)); 

//compare the dates 
if($date1 < $date2){ 
    //convert the date back to underscore format if needed when printing it out. 
    echo '1 is small='.$date1.','.date('d_m_y',$date1); 
}else{ 
    echo '2 is small='.$date2.','.date('d_m_y',$date2); 
} 
7

date_diff() फ़ंक्शन दो डेटटाइम ऑब्जेक्ट्स के बीच अंतर देता है।

यदि पहली तारीख दूसरी तारीख से पहले है तो दिनों की सकारात्मक संख्या वापस कर दी जाएगी; अन्यथा दिनों की नकारात्मक संख्या:

<?php 
$date1=date_create("2013-03-15"); 
$date2=date_create("2013-12-12"); 
$diff=date_diff($date1,$date2); 
echo $diff->format("%R%a days"); 
?> 

आउटपुट "+272 दिन" होगा;

बदलते $ DATE1 = "2014-03-15"

<?php 
    $date1=date_create("2014-03-15"); 
    $date2=date_create("2013-12-12"); 
    $diff=date_diff($date1,$date2); 
    echo $diff->format("%R%a days"); 
    ?> 

आउटपुट "-93 दिनों"

6

विस्तार @ कोई बात नहीं का जवाब, एक DateTime::createFromFormat: की तरह उपयोग कर सकते हैं, हो जाएगा

// use - instead of _. replace _ by - if needed. 
$format = "d-m-y"; 
$date1 = DateTime::createFromFormat($format, date('d-m-y')); 
$date2 = DateTime::createFromFormat($format, str_replace("_", "-",$date2));  
var_dump($date1 > $date2); 
5
<?php 
     $expiry_date = "2017-12-31 00:00:00" 
     $today = date('d-m-Y',time()); 
     $exp = date('d-m-Y',strtotime($expiry_date)); 
     $expDate = date_create($exp); 
     $todayDate = date_create($today); 
     $diff = date_diff($todayDate, $expDate); 
     if($diff->format("%R%a")>0){ 
      echo "active"; 
     }else{ 
      echo "inactive"; 
     } 
     echo "Remaining Days ".$diff->format("%R%a days"); 
?> 
+0

क्या आप कुछ स्पष्टीकरण जोड़ सकते हैं? –

2

आप पूर्णांक संख्या के लिए परिवर्तित करने और तुलना करने के लिए कर सकते हैं।

उदा .:

$ तिथि_1 = तारीख ('Ymd'); $ date_2 = '31_12_2011';

$ date_2 = (int) implode (array_reverse (विस्फोट ("_", $ date_2));

गूंज ($ date_1 < $ date_2)? '$ date_2 बड़ा है तो $ date_1': '$ date_2 $ date_1 से छोटा है';

3

इस

$data1 = strtotime(\date("d/m/Y")); 
$data1 = date_create($data1); 
$data2 = date_create("21/06/2017"); 

if($data1 < $data2){ 
    return "The most current date is date1"; 
} 

return "The most current date is date2"; 
संबंधित मुद्दे

 संबंधित मुद्दे