لقد تم تكليفك بتنفيذ فئة مخصصة تقوم بإجراء حسابات التاريخ والوقت. مهمتك هي إنشاء فئة تسمى "CustomDateTime" والتي تدعم الميزات التالية:

1. التهيئة: يجب أن تحتوي فئة "CustomDateTime" على مُنشئ يقبل السنة والشهر واليوم والساعة والدقيقة والثانية كمعلمات. يجب أن يقوم بتهيئة الحالة الداخلية للكائن بالقيم المتوفرة.

2. الإضافة: يجب أن تحتوي فئة "CustomDateTime" على أسلوب يسمى "add" الذي يقبل كائن "TimeInterval" كمعلمة. يجب أن تضيف الطريقة "add" الفاصل الزمني المحدد إلى التاريخ والوقت الحاليين اللذين يمثلهما كائن "CustomDateTime".

3. الطرح: يجب أن تحتوي فئة "CustomDateTime" على أسلوب يسمى "subtract" الذي يقبل كائن "TimeInterval" كمعلمة. يجب أن يقوم الأسلوب "subtract" بطرح الفاصل الزمني المحدد من التاريخ والوقت الحاليين اللذين يمثلهما الكائن "CustomDateTime".

4. التنسيق: يجب أن تحتوي فئة "CustomDateTime" على أسلوب يسمى "تنسيق" يقوم بإرجاع تمثيل سلسلة منسقة للتاريخ والوقت. يجب تحديد التنسيق كمعلمة سلسلة ويجب أن يدعم العناصر النائبة التالية:
   - `%Y` - سنة مكونة من أربعة أرقام
   - `%m` - شهر مكون من رقمين (01-12)
   - `%d` - يوم مكون من رقمين في الشهر (01-31)
   - `%H` - ساعة مكونة من رقمين (00-23)
   - `%M` - دقيقة مكونة من رقمين (00-59)
   - `%S` - ثانية مكونة من رقمين (00-59)

   على سبيل المثال، إذا كان التاريخ الحالي هو 15 يناير 2022، الساعة 09:30:00، وكان التنسيق هو `"%Y-%m-%d %H:%M:%S"`، فيجب أن يكون الأسلوب `format` إرجاع `"2022-01-15 09:30:00"`.

قم بتنفيذ فئة `CustomDateTime` بالميزات المحددة.

أنشئ فئة `TimeInterval` تمثل فاصلًا زمنيًا. يجب أن تتمتع فئة `TimeInterval` بالميزات التالية:

1. التهيئة: يجب أن تحتوي فئة "TimeInterval" على مُنشئ يقبل عدد السنوات والأشهر والأيام والساعات والدقائق والثواني كمعلمات. يجب أن يقوم بتهيئة الحالة الداخلية للكائن بالقيم المتوفرة.

2. الجمع والطرح: يجب أن تحتوي فئة "TimeInterval" على أساليب تسمى "add" و"subtract" والتي تقبل كائن "TimeInterval" آخر كمعلمة. يجب أن تقوم هذه الأساليب بإضافة أو طرح مكونات الوقت المقابلة لكائن "TimeInterval" الثاني من كائن "TimeInterval" الحالي.

3. التنسيق: يجب أن تحتوي فئة "TimeInterval" على طريقة تسمى "format" تقوم بإرجاع تمثيل سلسلة منسقة للفاصل الزمني. يجب تحديد التنسيق كمعلمة سلسلة ويجب أن يدعم نفس العناصر النائبة مثل أسلوب `format` للفئة `CustomDateTime`.

قم بتنفيذ فئة `TimeInterval` بالميزات المحددة.

مطلوب منك تنفيذ الفئتين "CustomDateTime" و"TimeInterval" بلغة البرمجة المفضلة لديك.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}