Kotlin में तिथि और समय के साथ उन्नत कार्य
\n\nआधुनिक Kotlin डेवलपमेंट में तिथि और समय का सही प्रबंधन सिर्फ एक सुविधा नहीं, बल्कि एक आवश्यकता है। उन्नत स्तर पर, डेवलपर को समय क्षेत्रों, अवधियों, अंतरालों और जटिल फ़ॉर्मेटिंग संचालन से निपटना पड़ता है। इस लेख में, हम प्रमुख टूल और तकनीकों पर चर्चा करेंगे जो आपको विश्वसनीय और कुशल कोड लिखने में मदद करेंगे।
\n\n1. मुख्य क्लासेस: LocalDate, LocalTime, LocalDateTime और Instant
\n\nKotlin पूरी तरह से शक्तिशाली java.time (JSR-310) लाइब्रेरी को इनहेरिट करता है, जो Java 8 और उससे ऊपर के संस्करणों में तिथि और समय के साथ काम करने का मानक बन गया है। Kotlin Multiplatform के लिए kotlinx-datetime लाइब्रेरी मौजूद है, लेकिन JVM प्रोजेक्ट्स में java.time सबसे लोकप्रिय बना हुआ है।
LocalDate, LocalTime, LocalDateTime
\nये क्लासेस बिना समय क्षेत्र के तिथि और समय को दर्शाती हैं। ये जन्मदिन, शेड्यूल और अन्य डेटा को स्टोर करने के लिए आदर्श हैं जहाँ समय क्षेत्र महत्वपूर्ण नहीं है।
\n\nimport java.time.LocalDate\nimport java.time.LocalTime\nimport java.time.LocalDateTime\n\nfun main() {\n val date = LocalDate.now()\n val time = LocalTime.of(14, 30, 0)\n val dateTime = LocalDateTime.of(date, time)\n \n println("तिथि: $date")\n println("समय: $time")\n println("तिथि और समय: $dateTime")\n \n // दिन जोड़ना और घटाना\n val tomorrow = date.plusDays(1)\n println("कल: $tomorrow")\n}\n\nInstant — मशीनों के लिए टाइमस्टैम्प
\nInstant UTC में समय रेखा पर एक बिंदु को दर्शाता है। यह लॉगिंग, सर्वरों के बीच डेटा आदान-प्रदान और API के साथ काम करने के लिए अपरिहार्य है।
import java.time.Instant\n\nfun main() {\n val now = Instant.now()\n println("UTC में वर्तमान क्षण: $now")\n \n // मिलीसेकंड से रूपांतरण\n val fromEpoch = Instant.ofEpochMilli(1_700_000_000_000)\n println("मिलीसेकंड से: $fromEpoch")\n}\n\n2. समय क्षेत्र: ZonedDateTime और OffsetDateTime
\n\nजब एप्लिकेशन विभिन्न क्षेत्रों के उपयोगकर्ताओं के साथ काम करता है, तो समय क्षेत्रों को ध्यान में रखना आवश्यक है। इसके लिए ZonedDateTime (पूर्ण ज़ोन जानकारी के साथ) और OffsetDateTime (केवल UTC से ऑफ़सेट) मौजूद हैं।
import java.time.ZonedDateTime\nimport java.time.ZoneId\nimport java.time.ZoneOffset\n\nfun main() {\n // न्यूयॉर्क में वर्तमान समय\n val newYork = ZonedDateTime.now(ZoneId.of("America/New_York"))\n println("न्यूयॉर्क: $newYork")\n \n // UTC से रूपांतरण\n val utcNow = ZonedDateTime.now(ZoneOffset.UTC)\n val moscowTime = utcNow.withZoneSameInstant(ZoneId.of("Europe/Moscow"))\n println("मॉस्को: $moscowTime")\n \n // सरल ऑफ़सेट के लिए OffsetDateTime\n val offsetTime = java.time.OffsetDateTime.now(ZoneOffset.ofHours(3))\n println("+3 घंटे: $offsetTime")\n}\n\nमहत्वपूर्ण: यूज़र इंटरफ़ेस के लिए हमेशा ZonedDateTime का उपयोग करें ताकि डेलाइट सेविंग टाइम को सही ढंग से संभाला जा सके। OffsetDateTime निश्चित ऑफ़सेट के लिए उपयुक्त है, जैसे लॉग के साथ काम करते समय।
3. तिथियों के बीच अंतर: Period और Duration
\n\nसमय में अंतर की गणना करने के लिए Kotlin दो क्लासेस प्रदान करता है: Period (तिथियों के लिए, दिनों/महीनों/वर्षों में) और Duration (सटीक अंतराल के लिए, सेकंड/नैनोसेकंड में)।
Period — कैलेंडर इकाइयों के साथ कार्य
\nimport java.time.LocalDate\nimport java.time.Period\n\nfun main() {\n val birthDate = LocalDate.of(1990, 5, 15)\n val today = LocalDate.now()\n val age = Period.between(birthDate, today)\n \n println("आयु: ${age.years} वर्ष, ${age.months} महीने, ${age.days} दिन")\n \n // तिथि में अवधि जोड़ना\n val nextMonth = today.plus(Period.ofMonths(1))\n println("एक महीने बाद: $nextMonth")\n}\n\n