दिलचस्प पोस्ट
शुद्ध जावास्क्रिप्ट में मैं तत्व का वर्ग कैसे टॉगल कर सकता हूं? जीआईटी पुल और जीआईटी पुल के बीच अंतर – रिबेस जावा में किसी ऑब्जेक्ट को हटाना? जावा में जनरेट क्या हैं? जेएस: getElementsByClassName का परिणाम ऐरे का उपयोग करने के लिए फ्लोट वैल्यू प्रदर्शित करें w / o वैज्ञानिक संकेतन स्ट्रिंग को डेटटाइम में परिवर्तित करना हास्केल पर्वतमाला और फ्लोट्स PHP में ऑपरेटर के साथ त्रुटि दबाएं पटकथा में कोई भी पुनरावर्ती फ़ंक्शन नहीं क्या मैं किसी विधि में कोड का निरीक्षण करने के लिए प्रतिबिंब का उपयोग कर सकता हूं? दृश्य नियंत्रकों के बीच संवाद करने का सबसे अच्छा तरीका क्या है? वेब अनुप्रयोग के लिए IIS7 फ़ोल्डर अनुमतियाँ PHP: कस्टम त्रुटि हैंडलर – पार्स और घातक त्रुटियों से निपटने Build.gradle फ़ाइल के लिए स्थानीय .jar फ़ाइल निर्भरता को कैसे जोड़ें?

हम कैसे 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 के प्रारूप में कुल घंटों और मिनट प्रारूपों में दो अंतराल की राशि प्राप्त करने के लिए इस प्रकार की अंतराल के अतिरिक्त कार्य कैसे करें

वेब के समाधान से एकत्रित समाधान "हम कैसे 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>";