العمل مع التواريخ والوقت في Swift: من الألف إلى الياء

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

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

ابدأ الدورة

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

\n

العمل مع التواريخ والوقت هو أحد المهام الأساسية عند تطوير التطبيقات لنظامي iOS و macOS. من عرض التاريخ الحالي ببساطة إلى الحسابات المعقدة للفترات الزمنية وإدارة المناطق الزمنية، توفر Swift مجموعة أدوات قوية ومرنة. في هذه المقالة، سنستعرض الفئات والهياكل الأساسية: Date و DateFormatter و Calendar و DateComponents و TimeInterval. ستتعلم كيفية إنشاء التواريخ وتنسيقها ومقارنتها والتعامل معها عمليًا.

\n\n

الفئات والهياكل الأساسية

\n

في Swift، يتم استخدام عدة أنواع أساسية للعمل مع التواريخ. دعنا نستعرض كلًا منها.

\n
    \n
  • Date — هيكل يمثل لحظة زمنية محددة. وهو مستقل عن التقويم أو المنطقة الزمنية.
  • \n
  • DateFormatter — فئة لتحويل التاريخ إلى نص والعكس.
  • \n
  • Calendar — هيكل يصف التقويم (ميلادي، بوذي، إلخ) ويوفر طرقًا للعمل مع مكونات التاريخ.
  • \n
  • DateComponents — هيكل لتخزين المكونات الفردية للتاريخ (السنة، الشهر، اليوم، الساعة، الدقيقة، إلخ).
  • \n
  • TimeInterval — نوع (Double) يمثل عدد الثواني.
  • \n
\n\n

العمل مع Date و DateFormatter

\n

لنبدأ بالأبسط: الحصول على التاريخ الحالي وعرضه للمستخدم.

\n\n

الحصول على التاريخ الحالي

\n
import Foundation\n\nlet currentDate = Date()\nprint("التاريخ والوقت الحالي: \\(currentDate)")\n// الإخراج: التاريخ والوقت الحالي: 2025-04-05 12:30:00 +0000
\n\n

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

\n

لجعل التاريخ يبدو مألوفًا، نستخدم DateFormatter:

\n
let formatter = DateFormatter()\nformatter.dateFormat = "dd.MM.yyyy HH:mm"\nlet dateString = formatter.string(from: currentDate)\nprint("التاريخ المنسق: \\(dateString)")\n// الإخراج: التاريخ المنسق: 05.04.2025 12:30
\n\n

تحويل نص إلى تاريخ

\n
let dateString = "2025-04-05 14:00"\nformatter.dateFormat = "yyyy-MM-dd HH:mm"\nif let parsedDate = formatter.date(from: dateString) {\n    print("التاريخ المحول: \\(parsedDate)")\n} else {\n    print("خطأ في التحويل")\n}
\n

هام: تأكد دائمًا من أن date(from:) لا يُرجع nil، وإلا فقد يتعطل التطبيق.

\n\n

التلاعب بالتواريخ عبر Calendar و DateComponents

\n

غالبًا ما نحتاج إلى إضافة أيام أو أشهر أو حساب الفرق بين التواريخ. هنا يأتي دور Calendar.

\n\n

إضافة وطرح الوقت

\n
let calendar = Calendar.current\nlet oneWeekLater = calendar.date(byAdding: .day, value: 7, to: currentDate)!\nlet oneMonthAgo = calendar.date(byAdding: .month, value: -1, to: currentDate)!\n\nprint("بعد أسبوع: \\(formatter.string(from: oneWeekLater))")\nprint("قبل شهر: \\(formatter.string(from: oneMonthAgo))")
\n\n

استخراج مكونات التاريخ

\n
let components = calendar.dateComponents([.year, .month, .day, .hour], from: currentDate)\nif let year = components.year, let month = components.month {\n    print("اليوم: \\(year)-\\(month)")\n}
\n\n

إنشاء تاريخ من المكونات

\n
var newComponents = DateComponents()\nnewComponents.year = 2025\nnewComponents.month = 12\nnewComponents.day = 25\nnewComponents.hour = 10\nnewComponents.minute = 0\n\nif let christmas = calendar.date(from: newComponents) {\n    print("عيد الميلاد: \\(formatter.string(from: christmas))")\n}
\n\n

مقارنة التواريخ والعمل مع TimeInterval

\n

تتيح Swift مقارنة التواريخ بسهولة وحساب الفترات الزمنية.

\n\n

مقارنة التواريخ

\n
let now = Date()\nlet futureDate = calendar.date(byAdding: .day, value: 10, to: now)!\n\nif futureDate > now {\n    print("                

المدونات

توصيات الكتب