Swift (iOS/macOS) में दिनांकों के साथ कार्य: लाइब्रेरीज़ का अवलोकन
iOS और macOS के लिए डेवलपमेंट में, दिनांक और समय के साथ कार्य करना प्रमुख कार्यों में से एक है। मानक फ्रेमवर्क Foundation शक्तिशाली, लेकिन कभी-कभी बोझिल उपकरण प्रदान करता है। कोड को सरल बनाने और पठनीयता बढ़ाने के लिए, डेवलपर्स अक्सर तृतीय-पक्ष लाइब्रेरीज़ का उपयोग करते हैं। इस लेख में, हम Swift (Foundation) की मूल क्षमताओं और दो लोकप्रिय लाइब्रेरीज़: SwiftDate और DateTools पर विचार करेंगे।
1. Foundation: अंतर्निहित क्षमताएँ
Foundation का मूल टूलकिट Date, DateFormatter, Calendar और TimeZone शामिल करता है। यह अधिकांश कार्यों के लिए पर्याप्त है, लेकिन इसके लिए लंबे कोड की आवश्यकता होती है।
उदाहरण: दिनांक बनाना और फ़ॉर्मेट करना
import Foundation
let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.timeZone = TimeZone(abbreviation: "UTC")let dateString = formatter.string(from: now)print(dateString) // 2025-04-01 14:30:00उदाहरण: दिनांकों के बीच अंतर की गणना
let startDate = Date()let endDate = Calendar.current.date(byAdding: .day, value: 7, to: startDate)!let components = Calendar.current.dateComponents([.day, .hour], from: startDate, to: endDate)print("\\(components.day!) दिन, \\(components.hour!) घंटे")Foundation के लाभ: कोई निर्भरता नहीं, पूर्ण नियंत्रण, सभी समय क्षेत्रों और कैलेंडरों का समर्थन।
नुकसान: सरल संचालन के लिए बहुत अधिक कोड, स्थानीयकरण और सापेक्ष दिनांकों के साथ जटिलता।
2. SwiftDate — शक्तिशाली और लचीली लाइब्रेरी
SwiftDate Swift में दिनांकों के साथ कार्य करने के लिए सबसे लोकप्रिय लाइब्रेरीज़ में से एक है। यह Foundation की क्षमताओं का विस्तार करती है, पार्सिंग, फ़ॉर्मेटिंग, हेरफेर और समय क्षेत्रों के साथ कार्य के लिए सुविधाजनक विधियाँ जोड़ती है।
स्थापना (Swift Package Manager)
// Package.swiftdependencies: [ .package(url: "https://github.com/malcommac/SwiftDate.git", from: "6.3.0")]उदाहरण: स्ट्रिंग से दिनांक बनाना
import SwiftDate
let date = "2025-04-01T14:30:00+0000".toDate()print(date?.toFormat("dd.MM.yyyy HH:mm")) // 01.04.2025 14:30उदाहरण: सापेक्ष दिनांक और अंतराल
let now = Date()let oneWeekAgo = now - 1.weeksprint(oneWeekAgo.toRelative()) // "1 week ago"
let nextMonth = now + 1.monthsprint(nextMonth.toFormat("MMMM yyyy")) // May 2025उदाहरण: समय क्षेत्रों के साथ कार्य
let parisDate = DateInRegion(Date(), region: .init(calendar: Calendars.gregorian, zone: Zones.europeParis, locale: Locales.french))print(parisDate.toFormat("HH:mm")) // पेरिस में समयSwiftDate के लाभ: संक्षिप्त सिंटैक्स, सापेक्ष दिनांकों, क्षेत्रों और स्थानों के लिए अंतर्निहित समर्थन, शक्तिशाली पार्सिंग।
नुकसान: लाइब्रेरी का बड़ा आकार (~2 एमबी), सरल प्रोजेक्ट्स के लिए अत्यधिक हो सकती है।
3. DateTools — सरलता और पठनीयता
DateTools एक हल्की-फुल्की लाइब्रेरी है, जो कोड पढ़ने में आसानी पर केंद्रित है। यह अंतरालों की त्वरित गणना, तुलना और फ़ॉर्मेटिंग के लिए Date में विधियाँ जोड़ती है।
स्थापना (CocoaPods)
pod 'DateToolsSwift'उदाहरण: समय अंतरालों की जाँच
import DateToolsSwift
let date1 = Date()let date2 = date1 + 2.hoursprint(date2.isToday) // trueprint(date1.earlierDate(date2) == date1) // trueउदाहरण: मानव-पठनीय स्ट्रिंग्स
let pastDate = Date() - 3.daysprint(pastDate.timeAgoSinceNow) // "3 days ago"
let futureDate = Date() + 1.weeksprint(futureDate.timeAgoSinceNow) // "in 1 w