C# (.NET) में तिथियों के साथ कार्य: अंतर्निहित साधनों से विशिष्ट पुस्तकालयों तक
तिथियों और समय के साथ कार्य करना किसी भी एप्लिकेशन के विकास में एक प्रमुख कार्य है: वेब-सेवाओं से लेकर डेस्कटॉप उपयोगिताओं तक। .NET प्लेटफ़ॉर्म शक्तिशाली अंतर्निहित साधन प्रदान करता है, जैसे DateTime, DateTimeOffset और TimeSpan। हालांकि, जटिल परिदृश्यों में (समय क्षेत्रों के साथ कार्य, मानव-पठनीय अंतराल, गैर-मानक प्रारूपों का पार्सिंग) डेवलपर्स अक्सर तृतीय-पक्ष पुस्तकालयों की ओर रुख करते हैं। इस लेख में, हम C# में तिथियों के साथ कार्य करने के लिए मुख्य उपकरणों पर चर्चा करेंगे।
1. .NET के अंतर्निहित साधन
.NET में तिथियों के साथ कार्य करने के लिए मूल प्रकार:
DateTime— एक समय बिंदु (तिथि + समय) का प्रतिनिधित्व करता है। जोड़, घटाव, तुलना संचालन का समर्थन करता है।DateTimeOffset— DateTime का एनालॉग, लेकिन UTC के सापेक्ष स्पष्ट ऑफ़सेट के साथ। वितरित प्रणालियों में तिथियों को संग्रहीत करने के लिए अनुशंसित।TimeSpan— समय अंतराल (उदाहरण के लिए, 2 घंटे 30 मिनट)।DateOnlyऔरTimeOnly(.NET 6 से) — अनावश्यक डेटा के बिना तिथि और समय को अलग-अलग संग्रहीत करने के लिए।
DateTime उपयोग का उदाहरण:
using System;
DateTime now = DateTime.Now;DateTime utcNow = DateTime.UtcNow;DateTime specificDate = new DateTime(2025, 3, 15, 14, 30, 0);
// फ़ॉर्मेटिंगstring formatted = now.ToString("dd.MM.yyyy HH:mm:ss");Console.WriteLine(formatted); // 15.03.2025 14:30:00
// अंकगणितDateTime tomorrow = now.AddDays(1);TimeSpan diff = tomorrow - now;Console.WriteLine($"कल तक: {diff.TotalHours} घंटे");स्ट्रिंग से तिथि पार्सिंग:
string dateStr = "2025-03-15";if (DateTime.TryParse(dateStr, out DateTime result)){ Console.WriteLine(result.ToShortDateString());}
// संस्कृति निर्दिष्ट करके पार्सिंगvar culture = new System.Globalization.CultureInfo("ru-RU");DateTime parsed = DateTime.Parse("15 марта 2025", culture);2. Noda Time — तिथियों और समय के साथ उन्नत कार्य
Noda Time — समुदाय द्वारा एक वैकल्पिक पुस्तकालय, जो अंतर्निहित DateTime की कमियों को दूर करने के लिए बनाया गया है। मुख्य विशेषताएं:
- अवधारणाओं का स्पष्ट विभाजन: Instant (UTC में क्षण), LocalDateTime (बिना क्षेत्र के तिथि+समय), ZonedDateTime (समय क्षेत्र के साथ)।
- IANA (Olson) डेटाबेस के माध्यम से समय क्षेत्रों का पूर्ण समर्थन।
- अपरिवर्तनीय (immutable) प्रकार — मल्टीथ्रेडेड कोड में सुरक्षित।
- मानव-पठनीय अंतराल (
Period): 2 वर्ष, 3 महीने, 5 दिन।
Noda Time के साथ कार्य का उदाहरण:
using NodaTime;using NodaTime.Text;
// UTC में वर्तमान क्षणInstant now = SystemClock.Instance.GetCurrentInstant();Console.WriteLine($"Instant: {now}");
// समय क्षेत्र के साथ स्थानीय समय में रूपांतरणDateTimeZone zone = DateTimeZoneProviders.Tzdb["Europe/Moscow"];ZonedDateTime moscowTime = now.InZone(zone);Console.WriteLine($"मास्को में समय: {moscowTime}");
// एक निश्चित प्रारूप में तिथि पार्सिंगvar pattern = LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd");LocalDate date = pattern.Parse("2025-03-15").Value;Console.WriteLine(date); // 15 मार्च 2025
// अवधियों के साथ कार्यLocalDate start = new LocalDate(2025, 1, 1);LocalDate end = new LocalDate(2025, 12, 31);Period period = Period.Between(start, end, PeriodUnits.Days);Console.WriteLine($"तिथियों के बीच दिन: {period.Days}");3. Humanizer — मानव-पठनीय तिथियाँ और अंतराल
Humanizer — संख्याओं, तिथियों और स्ट्रिंग्स को मानव-अनुकूल रूप में बदलने के लिए पुस्तकालय। तिथियों के संदर्भ में