Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP कार्बन का उपयोग करके, सेकंड में समय निकालें जहां दो समय अवधि ओवरलैप होती है

आप क्या कर सकते हैं DatePeriod 1 सेकंड के अंतराल में (मुझे लगता है कि यह व्यवसाय महत्वपूर्ण है, इसलिए इसे दूसरे स्थान पर होना चाहिए) और जांचें कि क्या प्रत्येक सेकंड दिन के व्यावसायिक घंटों के भीतर है। अगर है, तो इसे कुल में से घटा दें।

हालांकि, यह बेहद अक्षम है। उदाहरण के लिए, केवल एक पूरे दिन के लिए आपको 86400 चेक करने होंगे। यह धीमा हो जाता है जल्दी . हो सकता है कि आप इसके बजाय 1 मिनट या 1 घंटे के अंतराल का उपयोग कर सकते हैं यदि आपकी व्यावसायिक आवश्यकताएं इसकी अनुमति देती हैं, और कुछ अनुमान लगाएं। वैसे भी, आप यह कैसे कर सकते हैं:

<?php
use Carbon\Carbon;

$startTime = Carbon::create(2017, 9, 10, 8, 20, 0);
$endTime = Carbon::create(2017, 9, 10, 18, 35, 0);
$duration = $startTime->diffInSeconds($endTime, true);

$interval = new DateInterval("PT1S");
$period = new DatePeriod($startTime, $interval, $endTime);

$secondsToSubtract = 0;

foreach ($period as $second) {
    $businessStart = clone $second;
    $businessStart->setTime(8, 0); // start business day
    $businessEnd = clone $second;
    $businessEnd->setTime(17, 0); // end business day

    if (!($second > $businessStart && $second < $businessEnd)) { // if the second is not a "business second", subtract it
        $secondsToSubtract++;
    }
}
var_dump($secondsToSubtract);
$realDuration = $duration - $secondsToSubtract;
var_dump($realDuration);

आप उल्लेख नहीं करते कि सप्ताहांत आपके लिए व्यावसायिक दिन हैं या नहीं। यदि वे हैं, तो बस जांचें कि पुनरावृत्ति में वर्तमान दिन शनिवार या रविवार है और उन सभी सेकंडों को घटाएं।

आप यहां बहुत सारे अनुकूलन कर सकते हैं (उदाहरण के लिए दिन को कैशिंग करना), लेकिन यह आपको सही दिशा में ले जाना चाहिए।

(मैं आपको डेमो नहीं दिखा सकता क्योंकि मैं use Carbon विशिष्ट प्रदाताओं में)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में CHAR_LENGTH () क्या है?

  2. प्रश्नों में PyMySQL चर

  3. मैं MySQL में एक प्रिंट स्टेटमेंट का अनुकरण कैसे कर सकता हूं?

  4. PHP में लूप के साथ मैं एक ही आईडी डेटा कैसे सूचीबद्ध कर सकता हूं?

  5. mysqli में OUTPUT इन्सर्टेड.रो