C# (.NET) में तिथियों के साथ कार्य करना: अंतर्निहित उपकरण और लोकप्रिय पुस्तकालय
तिथियों और समय के साथ कार्य करना किसी भी गंभीर विकास में एक प्रमुख कार्य है। C# (.NET) पारिस्थितिकी तंत्र में इसके लिए शक्तिशाली अंतर्निहित प्रकार (DateTime, DateTimeOffset, TimeSpan) और तृतीय-पक्ष पुस्तकालय दोनों उपलब्ध हैं, जो जटिल संचालन को सरल बनाते हैं - समय क्षेत्रों के साथ कार्य, मानव-पठनीय प्रतिनिधित्व, गैर-मानक प्रारूपों का पार्सिंग। इस लेख में, हम C# में तिथियों के साथ कार्य करने के लिए बुनियादी उपकरणों पर विस्तार से चर्चा करेंगे।
.NET के अंतर्निहित प्रकार
मूल वर्ग System.DateTime तिथियों के निर्माण, तुलना, अंकगणित और फ़ॉर्मेटिंग के लिए विधियाँ प्रदान करता है। यह 01.01.0001 से 31.12.9999 तक की सीमा का समर्थन करता है।
// तिथि बनानाDateTime now = DateTime.Now; // स्थानीय समयDateTime utcNow = DateTime.UtcNow; // UTCDateTime specific = new DateTime(2025, 3, 15, 14, 30, 0);
// अंकगणितDateTime tomorrow = now.AddDays(1);TimeSpan diff = tomorrow - now;Console.WriteLine(diff.TotalHours); // 24
// पार्सिंगstring dateStr = "2025-12-31";DateTime parsed = DateTime.Parse(dateStr, CultureInfo.InvariantCulture);
// फ़ॉर्मेटिंगConsole.WriteLine(now.ToString("dd.MM.yyyy HH:mm")); // 15.03.2025 14:30DateTimeOffset एक उन्नत संस्करण है, जो UTC के सापेक्ष ऑफ़सेट संग्रहीत करता है। विभिन्न समय क्षेत्रों के साथ काम करने वाले अनुप्रयोगों के लिए अनुशंसित।
DateTimeOffset nowOffset = DateTimeOffset.Now;Console.WriteLine(nowOffset.Offset); // +03:00 (सिस्टम पर निर्भर करता है)TimeSpan - समय अंतरालों को प्रस्तुत करने के लिए। संचालन की अवधि मापने के लिए आदर्श।
TimeSpan duration = new TimeSpan(2, 15, 30); // 2 घंटे 15 मिनट 30 सेकंडConsole.WriteLine(duration.TotalMinutes); // 135.5NodaTime पुस्तकालय
NodaTime तिथियों और समय के साथ काम करने के लिए एक वैकल्पिक पुस्तकालय है, जिसे जॉन स्कीट (C# पुस्तकों के लेखक) द्वारा बनाया गया है। यह DateTime की कई समस्याओं को हल करता है, जैसे अस्पष्टता और समय क्षेत्रों की सख्त टाइपिंग का अभाव।
NuGet के माध्यम से स्थापना:
dotnet add package NodaTimeमुख्य प्रकार:
Instant— समय का एक क्षण (Unix timestamp के समान)LocalDateTime— समय क्षेत्र से बंधे बिना दिनांक+समयZonedDateTime— किसी विशिष्ट समय क्षेत्र में दिनांक+समयDurationऔरPeriod— अंतराल (TimeSpan के समान, लेकिन Period कैलेंडर इकाइयों को ध्यान में रखता है)
using NodaTime;
// UTC में वर्तमान क्षणInstant now = SystemClock.Instance.GetCurrentInstant();Console.WriteLine(now.ToDateTimeUtc()); // DateTime में परिवर्तित किया जा सकता है
// समय क्षेत्रों के साथ कार्यDateTimeZone tz = DateTimeZoneProviders.Tzdb["Europe/Moscow"];ZonedDateTime moscowTime = now.InZone(tz);Console.WriteLine(moscowTime); // 2025-03-15T17:30:00 Europe/Moscow (+03)
// Period — कैलेंडर इकाइयों में अंतरLocalDate start = new LocalDate(2024, 1, 1);LocalDate end = new LocalDate(2025, 3, 15);Period period = Period.Between(start, end);Console.WriteLine($"बीत गए {period.Years} वर्ष, {period.Months} महीने, {period.Days} दिन");// बीत गए 1 वर्ष, 2 महीने, 14 दिनNodaTime के लाभ: सख्त टाइपिंग, ऐतिहासिक समय क्षेत्रों के साथ सही कार्य, कैलेंडर का समर्थन (इस्लामिक, यहूदी, आदि), घड़ी बदलने पर अस्पष्टताओं का अभाव।
Humanizer पुस्तकालय
Humanizer डेटा को "मानवीकृत" करने के लिए एक पुस्तकालय है, जिसमें तिथियाँ और अंतराल शामिल हैं। यह तिथियों को पठनीय रूप में प्रदर्शित करने की अनुमति देता है: "कल", "3 घंटे में", "2 दिन पहले"।
स्थापना:
dotnet add package Humanizerउपयोग के उदाहरण