कितने दिन बीत गए? C# में शाश्वत समस्या का समाधान
\n\nकल्पना करें: आप छुट्टियों के लेखांकन के लिए एक ऐप लिख रहे हैं, एक टास्क शेड्यूलर, या बस यह जानना चाहते हैं कि नए साल में कितने दिन बाकी हैं। और फिर क्लासिक सवाल उठता है: "C# में दो तिथियों के बीच अंतर की गणना कैसे करें?"। यह प्रश्न Stack Overflow पर सबसे लोकप्रिय में से एक है, और यह उचित भी है। तिथियों के साथ काम करना एक मूलभूत बात है जो हर डेवलपर को जाननी चाहिए।
\n\nइस लेख में, हम केवल एक सूखा जवाब नहीं देंगे। हम वास्तविक उदाहरणों के साथ सब कुछ समझाएँगे, छिपी हुई समस्याओं को दिखाएँगे, और आपको किन्हीं भी दो समय बिंदुओं के बीच दिनों की संख्या (और न केवल) प्राप्त करना सिखाएँगे। चलिए शुरू करते हैं!
\n\nसबसे आसान तरीका: एक तिथि को दूसरी से घटाना
\n\nC# में तिथियों और समय के साथ काम करने के लिए एक शक्तिशाली संरचना DateTime मौजूद है। मुख्य रहस्य यह है कि यदि आप एक DateTime ऑब्जेक्ट को दूसरे से घटाते हैं, तो आपको एक संख्या नहीं, बल्कि एक विशेष ऑब्जेक्ट मिलता है — TimeSpan। यही अंतर को संग्रहीत करता है।
मूल उदाहरण: दो विशिष्ट तिथियों के बीच दिनों का अंतर
\n\nमान लीजिए, आप जानना चाहते हैं कि 1 मार्च 2024 और 10 मई 2024 के बीच कितने दिन बीते हैं।
\n\nusing System;\n\nclass Program\n{\n static void Main()\n {\n // दो तिथियाँ बनाएँ\n DateTime startDate = new DateTime(2024, 3, 1);\n DateTime endDate = new DateTime(2024, 5, 10);\n\n // अंतर की गणना करें\n TimeSpan difference = endDate - startDate;\n\n // पूरे दिनों की संख्या प्राप्त करें\n int days = difference.Days;\n\n Console.WriteLine($"दिनों में अंतर: {days}");\n // आउटपुट: दिनों में अंतर: 70\n }\n}\n\n\nसब कुछ सरल है, है ना? DateTime के लिए ऑपरेटर - ओवरलोडेड है और TimeSpan लौटाता है। गुण .Days पूरे दिनों की संख्या लौटाता है (घंटों, मिनटों और सेकंडों को छोड़कर)।
"आज" से अंतर की गणना
\n\nअक्सर यह गणना करने की आवश्यकता होती है कि किसी घटना से वर्तमान क्षण तक कितने दिन बीत चुके हैं। इसके लिए हम DateTime.Now या DateTime.Today का उपयोग करते हैं।
DateTime today = DateTime.Today; // केवल तिथि, समय 00:00\nDateTime someDay = new DateTime(2025, 1, 1); // 1 जनवरी 2025\n\nTimeSpan diff = someDay - today;\n\nConsole.WriteLine($"नए साल में बचे दिन: {diff.Days} दिन");\n\n\nध्यान दें: DateTime.Today वर्तमान तिथि को 00:00:00 पर सेट समय के साथ लौटाता है। यह सुविधाजनक है यदि आपको घंटे और मिनट महत्वपूर्ण नहीं हैं।
और यदि केवल दिनों से अधिक की आवश्यकता हो?
\n\nTimeSpan संरचना केवल .Days ही नहीं है। इसके अन्य उपयोगी गुण भी हैं जो काम आएंगे यदि आप कार्यक्षमता का विस्तार करने का निर्णय लेते हैं।
- \n
.Days— पूरे दिनों की संख्या। \n .Hours— घंटे (0 से 23 तक)। \n .Minutes— मिनट। \n .Seconds— सेकंड। \n .TotalDays— भिन्नात्मक संख्या के रूप में दिनों की कुल संख्या (उदाहरण के लिए, 70.5)। \n .TotalHours— घंटों की कुल संख्या। \n
TotalDays के साथ उदाहरण
\n\nकल्पना करें कि तिथियों के बीच का अंतर ठीक 36 घंटे है। गुण .Days 1 दिखाएगा (क्योंकि यह एक पूरा दिन और 12 घंटे है)। और .TotalDays 1.5 दिखाएगा।
DateTime start = new DateTime(2024, 1, 1, 0, 0, 0);\nDateTime end = new DateTime(2024, 1, 2, 12, 0, 0); // 1 जनवरी + 1 दिन और 12 घंटे\n\nTimeSpan span = end - start;\n\nConsole.WriteLine($"दिन (पूरे): {span.Days}"); // 1\nConsole.WriteLine($"कुल दिन: {span.TotalDays}"); // 1.5\n\n\nयदि आपका कार्य केवल पूरे दिनों की संख्या जानना है, तो .Days का उपयोग करें। यदि आपको अंशों के साथ सटीक मान चाहिए, तो
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें
जावा में दिनांक और समय के साथ कार्य: पूर्ण गाइड
TypeScript में REST API 30 मिनट में कैसे लिखें: व्यावहारिक रूप से
C++ में डेटाबेस के साथ कार्य: शुरुआती लोगों के लिए PostgreSQL और MongoDB
Rust में त्रुटि प्रबंधन: try/catch और उससे आगे — उन्नत स्तर
Rust में BDD: Cucumber और Specs के साथ लाइव कोड लिखना