दिलचस्प पोस्ट
अनुक्रमण के बिना फ़ाइलों के अंदर तारों की खोज करने के लिए उपकरण SOAP आधारित सेवाओं के बजाय एक का उपयोग क्यों करेगा? "गंभीर त्रुटि के समाधान: '100' के अधिकतम फ़ंक्शन नेस्टिंग स्तर तक पहुंचे, निरस्त!" PHP में पीआईपी कनेक्शन विफलता: इंडेक्स बेस यूआरएल को नहीं लाया जा सकता http://pypi.python.org/simple/ मेन-डीएक्स-सूची में बहुत अधिक कक्षाएं, मुख्य डेक्स क्षमता को पार किया गया वेब पर गणित समीकरण कश्मीर बीट सेट के साथ लम्बाई के सभी द्विआधारी स्ट्रिंग उत्पन्न करें ज्ञात ईमेल पते से फेसबुक उपयोगकर्ता (प्रोफ़ाइल पृष्ठ पर यूआरएल) ढूंढें मैं "IllegalStateException: स्क्रॉल्यूव्यू केवल एक सीधा बच्चे की मेजबानी कर सकता हूं" से कैसे बच सकता हूं? JQuery को क्रोम एक्सटेंशन में लोड करें? UIImagePicker केंद्र में फंसने की अनुमति देता है कोटलिन के इटररेबल और अनुक्रम बिल्कुल वैसा ही दिखता है। दो प्रकार की आवश्यकता क्यों है? यूआईटीएक्सफ़ेल्ड के बाहर कहीं भी स्पर्श पर कीबोर्ड को ख़ारिज करें किसी त्रुटि को अनदेखा करने के लिए और सूची में अगली बात को संसाधित करने के लिए कैसे लापरवाही से कहें? तेजी से एक बाधा को चेतन करने की कोशिश कर रहा

हम कैसे PHP में दो तारीख अंतराल जोड़ सकते हैं

मैं वास्तव में घंटों और मिनटों में कुल अवधि की गणना करने के लिए दो दिनांक अंतराल जोड़ना चाहता हूं, जैसा कि मैं नीचे दिखाए अनुसार जोड़ना चाहता हूं:

$a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1 : " . $interval1->format("%H:%I"); echo "<br />"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2 : " . $interval2->format("%H:%I"); echo "<br />"; echo "Total interval : " . $interval1 + $interval2; 

PHP के प्रारूप में कुल घंटों और मिनट प्रारूपों में दो अंतराल की राशि प्राप्त करने के लिए इस प्रकार की अंतराल के अतिरिक्त कार्य कैसे करें

Solutions Collecting From Web of "हम कैसे PHP में दो तारीख अंतराल जोड़ सकते हैं"

PHP में कोई ऑपरेटर ओवरलोडिंग नहीं है * इसलिए + ऑब्जेक्ट्स के साथ पीएचपी उन्हें पहली स्ट्रिंग में कनवर्ट करने की कोशिश कर रहा है, लेकिन DateInterval उस का समर्थन नहीं करता है:

 interval 1: 03:05 interval 2: 05:00 Total interval : 08:05 

इसके बजाय आपको एक नई DateTime ऑब्जेक्ट बनाने की आवश्यकता है, फिर अंतराल जोड़ने के लिए एन्ड फ़ंक्शन का उपयोग करें और अंत में संदर्भ बिंदु में अंतर प्रदर्शित करें:

 $e = new DateTime('00:00'); $f = clone $e; $e->add($interval1); $e->add($interval2); echo "Total interval : ", $f->diff($e)->format("%H:%I"), "\n"; 

पूर्ण Exmaple / ( डेमो ):

 $a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: ", $interval1->format("%H:%I"), "\n"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2: ", $interval2->format("%H:%I"), "\n"; $e = new DateTime('00:00'); $f = clone $e; $e->add($interval1); $e->add($interval2); echo "Total interval : ", $f->diff($e)->format("%H:%I"), "\n"; 

आप यह भी विचार करना चाह सकते हैं कि DateInterval अपने 'मूल्यों को कैसे DateInterval किया जाता है और फिर गणना से स्वयं को DateInterval ? निम्नलिखित उदाहरण ( डेमो ) किसी न किसी प्रकार का है, यह उल्टे चीज़ को ध्यान में नहीं लेता है, यह (फिर से) $days को false सेट नहीं करता है और मैंने सृजन पर अवधि विनिर्देशक के आईएसओ विनिर्देश की जाँच / परीक्षण नहीं किया है, लेकिन मुझे लगता है इस विचार को दिखाने के लिए पर्याप्त है:

 class MyDateInterval extends DateInterval { /** * @return MyDateInterval */ public static function fromDateInterval(DateInterval $from) { return new MyDateInterval($from->format('P%yY%dDT%hH%iM%sS')); } public function add(DateInterval $interval) { foreach (str_split('ymdhis') as $prop) { $this->$prop += $interval->$prop; } } } $a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: ", $interval1->format("%H:%I"), "\n"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2: ", $interval2->format("%H:%I"), "\n"; $e = MyDateInterval::fromDateInterval($interval1); $e->add($interval2); echo "Total interval: ", $e->format("%H:%I"), "\n"; 

* यदि आप एक PHP एक्सटेंशन लिखते हैं, तो यह वास्तव में संभव है (कम से कम सॉर्ट-ऑफ़)।

यह फ़ंक्शन आपको किसी भी दिनांक इंटरटेनॉल को गठबंधन करने की अनुमति देता है

 /** * Combine a number of DateIntervals into 1 * @param DateInterval $... * @return DateInterval */ function addDateIntervals() { $reference = new DateTimeImmutable; $endTime = clone $reference; foreach (func_get_args() as $dateInterval) { $endTime = $endTime->add($dateInterval); } return $reference->diff($endTime); } 
 function compare_dateInterval($interval1, $operator ,$interval2){ $interval1_str = $interval1->format("%Y%M%D%H%I%S"); $interval2_str = $interval2->format("%Y%M%D%H%I%S"); switch($operator){ case "<": return $interval1 < $interval2; case ">": return $interval1 > $interval2; case "==" : return $interval1 == $interval2; default: return NULL; } } function add_dateInterval($interval1, $interval2){ //variables $new_value= []; $carry_val = array( 's'=>['value'=>60,'carry_to'=>'i'], 'i'=>['value'=>60,'carry_to'=>'h'], 'h'=>['value'=>24,'carry_to'=>'d'], 'm'=>['value'=>12,'carry_to'=>'y'] ); //operator selection $operator = ($interval1->invert == $interval2->invert) ? '+' : '-'; //Set Invert if($operator == '-'){ $new_value['invert'] = compare_dateInterval($interval1,">",$interval2)?$interval1->invert:$interval2->invert; }else{ $new_value['invert'] = $interval1->invert; } //Evaluate foreach( str_split("ymdhis") as $property){ $expression = 'return '.$interval1->$property.' '.$operator.' '.$interval2->$property.';'; $new_value[$property] = eval($expression); $new_value[$property] = ($new_value[$property] > 0) ? $new_value[$property] : -$new_value[$property]; } //carry up foreach($carry_val as $property => $option){ if($new_value[$property] >= $option['value']){ //Modulus $new_value[$property] = $new_value[$property] % $option['value']; //carry over $new_value[$option['carry_to']]++; } } $nv = $new_value; $result = new DateInterval("P$nv[y]Y$nv[m]M$nv[d]DT$nv[h]H$nv[i]M$nv[s]S"); $result->invert = $new_value['invert']; return $result; } $a = new DateTime('00:0'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: ", $interval1->format("%H:%I"), "<br>"; $c = new DateTime('08:01:00'); $d = new DateTime('13:30:33'); $interval2 = $c->diff($d); echo "interval 2: ", $interval2->format("%H:%I"), "<br>"; $addition = add_dateInterval($interval1,$interval2); echo "<pre>"; echo var_dump($addition); echo "</pre>";