العمل مع التواريخ في Swift (iOS/macOS): المكتبات والأدوات

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

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

ابدأ الدورة

العمل مع التواريخ في Swift (iOS/macOS): نظرة عامة على المكتبات



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



1. الأدوات المدمجة في Foundation

قبل توصيل الحلول الخارجية، من المهم معرفة كيفية العمل مع الأدوات الأصلية. الفئات الرئيسية:

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


مثال: تنسيق التاريخ

import Foundation

let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.locale = Locale(identifier: "ar_SA")let dateString = formatter.string(from: now)print(dateString) // 2025-02-18 14:30:00


مثال: حساب الفرق بالأيام

let calendar = Calendar.currentlet start = Date()let end = calendar.date(byAdding: .day, value: 7, to: start)!let components = calendar.dateComponents([.day], from: start, to: end)print(components.day!) // 7


هذه الإمكانيات كافية لمعظم السيناريوهات الأساسية. ولكن بمجرد الحاجة إلى تحليل معقد أو توطين، يصبح الكود ضخمًا.



2. مكتبة DateHelper

DateHelper — مكتبة خفيفة الوزن (متاحة عبر Swift Package Manager)، تضيف امتدادات مريحة إلى Date. الميزة الرئيسية هي التواريخ النسبية المقروءة للإنسان.



التثبيت: في Package.swift أضف التبعية https://github.com/melvitax/DateHelper.



مثال: «منذ 3 ساعات»

import DateHelper

let pastDate = Date() - 3.hoursprint(pastDate.toRelativeString()) // "3 hours ago"// عند التوطين: print(pastDate.toRelativeString(locale: "ar"))


تدعم المكتبة العديد من صيغ الإخراج: .short، .medium، .full. هذا خيار مثالي للتطبيقات التي تحتاج إلى عرض «الآن»، «أمس»، «منذ أسبوعين» دون كتابة محلل خاص.



3. SwiftDate — الأداة الأقوى

SwiftDate (المؤلف: Daniele Margutti) — هو المعيار الفعلي للعمل مع التواريخ في Swift. يتضمن:

  • تحليل السلاسل النصية مع الكشف التلقائي عن التنسيق.
  • التلاعب بالتواريخ (إضافة/طرح المكونات).
  • حساب الفرق بأي وحدات.
  • التوطين (دعم أكثر من 30 لغة).
  • العمل مع المناطق الزمنية والتقاويم.


التثبيت: عبر SPM أو CocoaPods.



مثال: تحليل سلسلة نصية بتنسيق غير معروف

import SwiftDate

let dateString = "2025-02-18T14:30:00+03:00"if let date = dateString.toDate() { print(date.year) // 2025 print(date.month) // 2 print(date.toFormat("dd MMMM yyyy", locale: Locales.arabic)) // "18 فبراير 2025"}


مثال: الحصول على الفاصل الزمني بشكل مقروء للإنسان

let start = DateInRegion(Date())let end = start + 2.hours + 30.minuteslet interval = start.toRelativeString(end, style: RelativeFormatter.defaultStyle())print(interval) // "2 hours 30 minutes later"


SwiftDate يمكنه أيضًا العمل مع الـ

توصيات