मैं एक तिथि में 2 कार्यदिवस जोड़ने की कोशिश कर रहा हूं, लेकिन मैं एक सरणी में दिनों को भी बाहर करना चाहता हूं।
बाहर करने के लिए तिथियों की सरणी:
$bankHolidays = array();
foreach($obj as $e) {
if($e->division == 'england-and-wales') {
foreach($e->events as $events) {
$bankHolidays[] = $events->date;
}
}
}
अब तक 2 कार्य दिवस जोड़े जा रहे हैं
$ret = date('d-m-Y', strtotime($bill["charge_customer_at"]. ' +2 weekdays'));
मैं बाहर करने के लिए तिथियों की सरणी कैसे शामिल कर सकता हूं?
उदाहरण के तौर पर, यदि मेरी तिथि 2017-07-19
थी और मैं 2 सप्ताह के दिन जोड़ना चाहता हूं, तो वह 2017-07-21
आउटपुट करेगा।
लेकिन अगर 2017-07-21
मेरी सरणी में था, तो उसे इस तिथि को छोड़ देना चाहिए और 2 सप्ताह के दिनों को जोड़ना जारी रखना चाहिए ताकि सप्ताहांत के कारण भी आउटपुट 2017-07-24
हो जाए।
2 जवाब
आप while
लूप का उपयोग करने जितना आसान कुछ कर सकते हैं।
$date = '2017-07-25';
$reserved = ['2017-07-27', '2017-07-28'];
$days = 2;
while ($days > 0) {
$date = date('Y-m-d', strtotime($date . ' +1 weekday'));
if (! in_array($date, $reserved)) $days--;
}
var_dump($date);
किसी दिए गए ऑफ़सेट के साथ अगला कार्यदिवस फ़ंक्शन ढूंढें।
निम्नलिखित मूल रूप से आपकी दी गई तिथि, आपके द्वारा छोड़े जाने वाले दिनों की संख्या, आपके मामले 2 में, और छुट्टियों की सरणी जिसे आप अपने प्रश्न में दिखाते हैं, पहले से तैयार करते हैं। यदि आपकी तिथि के बाद का कार्यदिवस छुट्टी का दिन है तो यह एक दिन जोड़ता है और फिर से जांच करता है।
function nextBusinessDay($date, $daysToSkip,$holidays){
$day = date('Y-m-d',strtotime($date. ' + '.$daysToSkip.' weekday'));
if(!in_array($day,$holidays)){
return $day;
} else {
return nextBusinessDay(date('Y-m-d',strtotime($date.' +1 day')), $daysToSkip,$holidays);
}
}
$date = '2017-07-19';
$holidays = ['2017-07-21'];
echo nextBusinessDay($date,2,$holidays);//returns 2017-07-24
$date = '2017-07-19';
$holidays = ['2017-07-21', '2017-07-24'];
echo nextBusinessDay($date,2,$holidays);//returns 2017-07-25 like if it were a 4 day weekend
क्षमा करें, इसे देखने और कुछ पोस्ट करने का मौका पाने में मुझे कुछ समय लगा। यह आपके लिए काम करना चाहिए। मेरी समझ यह है कि आपको पहली व्यावसायिक तिथि वापस करने की आवश्यकता है जो किसी दिए गए दिनांक से दो दिन है, दो सप्ताह के दिनों को तब तक न जोड़ें जब तक कि वह तिथि आपकी छुट्टियों की सरणी में न हो। अगर आप वाकई 2 दिन या फिर कितने दिन जोड़ना चाहते हैं, तो बदलें
return nextBusinessDay(date('Y-m-d',strtotime($date.' +1 day')), $daysToSkip,$holidays);
प्रति
return nextBusinessDay(date('Y-m-d',strtotime($date.' +'.$daysToSkip.' day')), $daysToSkip,$holidays);
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।