العمل مع التواريخ والوقت في Kotlin: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في التعامل مع التواريخ والوقت في Kotlin

التعامل مع التواريخ والوقت هي إحدى المهام الأساسية في تطوير أي تطبيق. سواء كان ذلك تسجيل الأحداث، حساب المواعيد النهائية، عرض التقويم أو التعامل مع الطوابع الزمنية — لا يمكن الاستغناء عن أدوات موثوقة. في بيئة Kotlin، تُستخدم لهذه الأغراض المكتبة القوية java.time، التي حلت محل java.util.Date و java.util.Calendar القديمتين. بفضل التوافق الكامل مع Java، تسمح Kotlin باستخدام جميع إمكانيات java.time بشكل مباشر، كما تضيف امتدادات مريحة وسكر نحوي.

في هذه المقالة، سنشرح بالتفصيل كيفية إنشاء وتنسيق وتحليل وتحويل التواريخ والوقت في Kotlin. ستتعرف على الفئات الرئيسية مثل LocalDate و LocalTime و LocalDateTime و ZonedDateTime و Instant، وستتعلم أيضًا كيفية التعامل مع الفترات الزمنية والمدد. جميع أمثلة الكود مكتوبة بلغة Kotlin الخالصة وجاهزة للاستخدام.



الفئات الأساسية للتعامل مع التواريخ والوقت

تقدم المكتبة java.time عدة فئات رئيسية، كل منها يحل مشكلة معينة. دعنا نستعرضها بالتفصيل.



LocalDate — التعامل مع التاريخ بدون وقت

تمثل الفئة LocalDate التاريخ (السنة، الشهر، اليوم) دون مراعاة الوقت والمنطقة الزمنية. مثالية لأعياد الميلاد، الأحداث التقويمية والمهام التي لا يهم فيها الوقت.

import java.time.LocalDate

fun main() { // التاريخ الحالي val today = LocalDate.now() println("اليوم: $today")

// تاريخ محدد val specificDate = LocalDate.of(2024, 12, 25) println("عيد الميلاد: $specificDate")

// تحليل من نص val parsedDate = LocalDate.parse("2024-12-25") println("تم التحليل: $parsedDate")}


LocalTime — التعامل مع الوقت بدون تاريخ

LocalTime يخزن الوقت فقط (الساعات، الدقائق، الثواني، النانو ثانية). يُستخدم للجداول الزمنية، المؤقتات والطوابع الزمنية دون الارتباط بتاريخ.

import java.time.LocalTime

fun main() { // الوقت الحالي val now = LocalTime.now() println("الآن: $now")

// وقت محدد val lunchTime = LocalTime.of(13, 30) println("الغداء في: $lunchTime")

// تحليل val parsedTime = LocalTime.parse("15:45:30") println("تم التحليل: $parsedTime")}


LocalDateTime — دمج التاريخ والوقت

LocalDateTime يدمج LocalDate و LocalTime. هذه هي الفئة الأكثر استخدامًا لتخزين لحظة زمنية دون مراعاة المنطقة الزمنية.

import java.time.LocalDateTimeimport java.time.LocalDateimport java.time.LocalTime

fun main() { // اللحظة الحالية val now = LocalDateTime.now() println("الآن: $now")

// من مكونات منفصلة val date = LocalDate.of(2024, 12, 25) val time = LocalTime.of(10, 0) val christmasMorning = LocalDateTime.of(date, time) println("صباح عيد الميلاد: $christmasMorning")

// طريقة مدمجة val newYear = LocalDateTime.of(2025, 1, 1, 0, 0) println("رأس السنة: $newYear")}


تنسيق وتحليل التواريخ

لتحويل التواريخ إلى نصوص والعكس، تُستخدم الفئة DateTimeFormatter. وهي تدعم العديد من التنسيقات المحددة مسبقًا، كما تسمح بإنشاء قوالب مخصصة.



تنسيق التاريخ إلى نص

import java.time.LocalDateTimeimport java.time.format.DateTimeFormatter

fun main() { val now = LocalDateTime.now()

// تنسيق ISO القياسي val isoFormat = now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) println("ISO: $isoFormat")

// تنسيق مخصص val customFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")

المدونات

توصيات الكتب