c# - AddBusinessDays and GetBusinessDays -
मुझे 2 सुरुचिपूर्ण पूरा लागू करने की आवश्यकता है
सार्वजनिक स्थैतिक दिनांक समय AddBusinessDays (यह दिनांक समय दिनांक, इंट दिवस) {// कोड यहाँ} और सार्वजनिक स्थिर ग GetBusinessDays (यह तिथि समय प्रारंभ, दिनांक समय समाप्ति) {// code here}
O (1) बेहतर (कोई छोर नहीं) ।
संपादित करें: व्यावसायिक दिनों से मेरा मतलब है कामकाजी दिन (सोमवार, मंगलवार, बुधवार, गुरुवार, शुक्रवार)। कोई छुट्टियां नहीं, बस सप्ताहांत में शामिल नहीं है
मेरे पास पहले से कुछ बदसूरत समाधान हैं जो काम करने लगते हैं लेकिन मुझे आश्चर्य है कि ऐसा करने के लिए शानदार तरीके हैं। धन्यवाद
यही मैंने अभी तक लिखा है। यह सभी मामलों में काम करता है और नकारात्मक भी करता है अभी भी एक GetBusinessDays कार्यान्वयन की आवश्यकता है
<प्री> सार्वजनिक स्थिर दिनांक समय AddBusinessDays (यह तिथि समय प्रारंभिक तिथि, इंट व्यापार दिन) {int direction = Math.Sign (businessDays); यदि (दिशा == 1) {यदि (startDate.DayOfWeek == दिनऑफ़ वीक शनिवार) {startDate = startDate.AddDays (2); व्यापार दिवस = व्यापार दिवस - 1; } और अगर (startDate.DayOfWeek == DayOfWeek.Sunday) {startDate = startDate.AddDays (1); व्यापार दिवस = व्यापार दिवस - 1; }} और {अगर (startdate.DayOfWeek == दिनऑफ़ वीक शनिवार) {startDate = startDate.AddDays (-1); BusinessDays = व्यापार दिवस + 1; } और अगर (startDate.DayOfWeek == DayOfWeek.Sunday) {startDate = startDate.AddDays (-2); BusinessDays = व्यापार दिवस + 1; }} इंट इनिशियलडॉऑफ़वाईक = (इंट) स्टार्टडेट। डायऑफ़ वीक; इंट सप्ताहबेज = मठ। एब्स (व्यवसायदिन / 5); Int addDays = Math.Abs (businessDays% 5); यदि ((दिशा == 1 और amp; addDays + initialDayOfWeek & gt; 5) || (दिशा == -1 और & amp; addDays & gt; = initialDayOfWeek)) {addDays + = 2; } इंटेल कुलदिन = (सप्ताहबेज * 7) + ऐडडिसेस; रिटर्न स्टार्टडेट। एडडाइडे (कुलदिन * दिशा); }
आपके पहले फ़ंक्शन के लिए नवीनतम प्रयास:
सार्वजनिक स्थैतिक दिनांक समय AddBusinessDays (दिनांक समय की तारीख, इंति का दिन) {यदि (दिन और लेफ्टिनेंट; 0) {नया तर्क अभिव्यक्ति ("दिन नकारात्मक नहीं हो सकते", "दिन"); } यदि (दिन == 0) वापसी की तारीख; यदि (date.DayOfWeek == DayOfWeek.S शनिवार) {date = date.AddDays (2); दिन - = 1; } और अगर (date.DayOfWeek == DayOfWeek.Sunday) {date = date.AddDays (1); दिन - = 1; } तारीख = दिनांक। जोड़ेंदिन (दिन / 5 * 7); Int extraDays = दिन% 5; यदि ((इंट) की तारीख। DayOfWeek + extraDays & gt; 5) {extraDays + = 2; } वापसी की तारीख। अतिरिक्त दिन (अतिरिक्त दिन); }
दूसरा कार्य, GetBusinessDays, निम्नानुसार कार्यान्वित किया जा सकता है:
सार्वजनिक स्थिर इंटबिजनेसडे (दिनांकटाइम प्रारंभ, दिनांकटाइम समाप्ति) {यदि (प्रारंभ करें। DayOfWeek == DayOfWeek शनिवार) {start = start.AddDays (2); } और अगर (start.DayOfWeek == DayOfWeek.Sunday) {start = start.AddDays (1); } अगर (end.DayOfWeek == DayOfWeek.S शनिवार) {end = end.AddDays (-1); } और अगर (अंत। DayOfWeek == DayOfWeek.Sunday) {end = end.AddDays (-2); } Int diff = (int) end.Subtract (प्रारंभ)। कुलकाल; Int परिणाम = अंतर / 7 * 5 + अंतर% 7; अगर (end.DayOfWeek & lt; start.DayOfWeek) {रिटर्न परिणाम - 2; } और {वापसी परिणाम; }}
Comments
Post a Comment