Kotlin में दिनांक और समय के साथ उन्नत कार्य
\n\nKotlin में आधुनिक विकास में, दिनांक और समय के साथ कार्य करना वर्तमान दिनांक प्रदर्शित करने से कहीं आगे निकल जाता है। उन्नत स्तर पर, समय क्षेत्रों को ध्यान में रखना, अवधियों के साथ जटिल गणना करना, गैर-मानक प्रारूपों को पार्स करना और वितरित प्रणालियों में टाइमस्टैम्प को संसाधित करना आवश्यक है। इस लेख में, हम प्रमुख लाइब्रेरी और तकनीकों पर चर्चा करेंगे जो आपको Kotlin में दिनांक और समय के साथ कार्य करने के लिए विश्वसनीय और कुशल कोड लिखने में मदद करेंगी।
\n\n1. लाइब्रेरी का चयन: java.time बनाम kotlinx-datetime
\n\nKotlin Java के साथ पूरी तरह से संगत है, इसलिए आप शक्तिशाली java.time API (JSR-310) का उपयोग कर सकते हैं, जो नई परियोजनाओं के लिए मानक है। हालाँकि, मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स (KMP) के लिए JetBrains के kotlinx-datetime को चुनना बेहतर है।
java.time (JVM)
\nमुख्य वर्ग: LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant, Duration, Period।
import java.time.*\n\nfun main() {\n val today = LocalDate.now()\n val meetingTime = LocalDateTime.of(2025, 3, 15, 14, 30)\n val zonedMeeting = ZonedDateTime.of(meetingTime, ZoneId.of("Europe/Moscow"))\n println("मास्को में बैठक: $zonedMeeting")\n}\n\nkotlinx-datetime (Multiplatform)
\nbuild.gradle.kts में निर्भरता जोड़ें:
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")\n\nimport kotlinx.datetime.*\n\nfun main() {\n val now = Clock.System.now()\n val date = now.toLocalDateTime(TimeZone.of("Europe/Moscow")).date\n println("आज: $date")\n}\n\n2. दिनांकों का पार्सिंग और फ़ॉर्मेटिंग
\n\nसही पार्सिंग बाहरी डेटा के साथ कार्य करने का आधार है। आइए उन्नत तकनीकों पर नज़र डालें।
\n\nगैर-मानक प्रारूपों के साथ पार्सिंग
\n\nimport java.time.LocalDateTime\nimport java.time.format.DateTimeFormatter\nimport java.time.format.DateTimeParseException\n\nfun parseCustomDate(dateString: String): LocalDateTime? {\n val formatters = listOf(\n DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),\n DateTimeFormatter.ofPattern("dd/MM/yyyy'T'HH:mm"),\n DateTimeFormatter.ISO_LOCAL_DATE_TIME\n )\n for (formatter in formatters) {\n try {\n return LocalDateTime.parse(dateString, formatter)\n } catch (e: DateTimeParseException) {\n // अगला प्रयास करें\n }\n }\n return null\n}\n\nfun main() {\n println(parseCustomDate("2025-03-15 14:30:00")) // 2025-03-15T14:30\n println(parseCustomDate("15/03/2025T14:30")) // 2025-03-15T14:30\n}\n\nस्थानीयकृत फ़ॉर्मेटिंग
\n\nimport java.time.LocalDate\nimport java.time.format.DateTimeFormatter\nimport java.time.format.FormatStyle\nimport java.util.Locale\n\nfun main() {\n val date = LocalDate.of(2025, 3, 15)\n val usFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)\n .withLocale(Locale.US)\n val ruFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)\n .withLocale(Locale("ru"))\n println("USA: ${date.format(usFormatter)}") // Saturday, March 15, 2025\n println("RU: ${date.format(ruFormatter)}") // суббота, 15 марта 2025 г.\n}\n\n3. Duration और Period के साथ जटिल गणनाएँ
\n\nDuration - सटीक समय अंतराल (घंटे, मिनट, सेकंड) के लिए, Period - कैलेंडर अवधियों (वर्ष, महीने, दिन) के लिए।
व्यावसायिक तर्क के साथ दिनांकों के बीच अंतर
\n\nimport java.time.*\nimport java.time.temporal.ChronoUnit\n\nfun businessDaysBetween(start: LocalDate, end: LocalDate): Long {\n var count = 0L\n var current = start\n while (current.isBefore(end)) {\n if (current.dayOfWeek != DayOfWeek.SATURDAY && \n current.dayOfWeek != DayOfWe