Saturday, 15 February 2014

mysql - Duration between two or more time intervals (in PHP) -


मेरे पास समय अंतराल है,

  1- 07:00 से 09 : 30: 00 (अवधि 02:30:00) 2- 08:00:00 से 11:00:00 (अवधि 03:00:00)  

लेकिन वास्तविक संयुक्त अवधि 07 है : 00: 00 - 11:00:00 (दुर 04:00:00) जब हम 2 व्यक्तिगत अवधि जोड़ रहे हैं तो यह 5: 30: 00 को परिणाम देगा.इस तरह के भिन्न संयोजन हो सकते हैं (1-7,5-8,9-10-6-9: 30) मुझे वास्तविकता प्राप्त करने के लिए एक तर्क चाहिए समय अंतराल को अन्तर्निहित करने पर विचार किए बिना अवधि यदि यह पहले ही उत्तर दिया गया है तो कृपया मुझे इसके लिए रास्ता दें अग्रिम में धन्यवाद। नोटः उपस्थिति आंकड़ों और ड्यूटी स्लिप्स से किए गए काम की अवधि की गणना करना है

ऐसा करने के लिए किसी भी स्वचालित तरीके से पता नहीं है, लेकिन आईएमओ को उन्हें एक पूर्णांक (यूनिक्स टाइम स्टाम्प) में बदलना होगा और फिर एक समय में दो से निपटना होगा। इसके बाद आप जल्द से जल्द आरंभ समय और नवीनतम समाप्ति समय को ऑर्डर करने के लिए पा सकते हैं, तो यह देखने के लिए जांचें कि क्या पहले के समय का नवीनतम प्रारंभ समय प्रारंभ हो गया है। , $ Start2, $ end2) {$ आरंभिक = $ start1 & lt; = $ start2? 1: 2; $ नवीनतम = $ end1 & gt; = $ end2? 1: 2; अगर ($ जल्द $ == $ नवीनतम) {$ end = 'end'। $ नवीनतम; $ Start = 'start'। $ जल्द से जल्द; वापसी ($ $ अंत - $$ शुरू); } // जांचें कि क्या कोई ओवरलैप है। $ शुरुआती अंत = 'अंत'। $ जल्द से जल्द; $ LateStart = 'start'। $ नवीनतम; अगर ($ शुरुआती = अंत & gt; = $ lateStart) {$ start = 'start'। $ जल्द से जल्द; $ End = 'end'। $ नवीनतम; वापसी ($ $ अंत - $$ शुरू); } // अगर कोई ओवरलैप नहीं है, तो हम सिर्फ दो की अवधि पूरी करते हैं। वापसी (($ end1 - $ start1) + ($ end2 - $ start2)); } $ Start1 = strtotime ('01 / 01/1970 07:00 '); $ End1 = स्ट्रॉटोम ('01 / 01/1970 9:30 '); $ Start2 = स्ट्रॉटोम ('01 / 01/1970 08:00 '); $ End2 = स्ट्रॉटोम ('01 / 01/1970 11:00 '); $ TotalDuration = तुलना करें टाइम्स ($ प्रारंभ 1, $ end1, $ start2, $ end2);

NB: मैंने इस कोड का परीक्षण नहीं किया है। कृपया इसे किसी जीवित वातावरण में उपयोग करने से पहले जांचें।


No comments:

Post a Comment