المرشح date في Twig
يغير المرشح date
صياغة التاريخ إلى الصيغة المعطاة:
{{ post.published_at|date("m/d/Y") }}
محدد الصيغة يشبه ذلك المدعوم في date
إلا حين تكون البيانات الممرشحة من نوع DateInterval
، إذ يجب أن تتوافق الصيغة حينها مع DateInterval::format
، ويقبل المرشح date
السلاسل النصية التي يجب أن تكون بصيغة تدعمها دالة strtotime
، ونسخ DateTime
أو نسخ DateInterval
. فمثلًا، يجب ترشيح كلمة now من أجل عرض التاريخ الحالي:
{{ "now"|date("m/d/Y") }}
استخدم \\
لتهريب الكلمات والمحارف في صيغة التاريخ، وذلك أمام كل محرف:
{{ post.published_at|date("F jS \\a\\t g:ia") }}
إذا كانت القيمة الممررة إلى المرشح date
هي null
فستعيد التاريخ الحالي افتراضيًا، أما إذا أردنا سلسلة نصية فارغة بدلًا من التاريخ الحالي فاستخدم العامل الثلاثي:
{{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }}
إذا لم يتم توفير صيغة فسيستخدم Twig الصيغة الافتراضية: F j, Y H:i
، ويمكن تغييرها باستدعاء التابع setDateFormat()
على نسخة التوسيع core
، وسيكون أول وسيط هو الصيغة الافتراضية للتواريخ والثاني للفترات الزمنية، انظر:
$twig = new \Twig\Environment($loader);
$twig->getExtension(\Twig\Extension\CoreExtension::class)->setDateFormat('d/m/Y', '%d days');
المنطقة الزمنية
يُعرض التاريخ افتراضيًا بتطبيق المنطقة الزمنية الافتراضية -المحددة في php.ini أو المصرح عنها في Twig، انظر أدناه-، لكن تستطيع تخطيها بتحديد منطقة زمنية صراحة:
{{ post.published_at|date("m/d/Y", "Europe/Paris") }}
إذا كان التاريخ كائنَ DateTime
وكنت تريد الحفاظ على منطقته الزمنية فمرر false
كقيمة للمنطقة الزمنية:
{{ post.published_at|date("m/d/Y", false) }}
يمكن تعيين المنطقة الزمنية الافتراضية تعيينًا عامًا (globally) باستدعاء setTimezone()
:
$twig = new \Twig\Environment($loader);
$twig->getExtension(\Twig\Extension\CoreExtension::class)->setTimezone('Europe/Paris');
الوسائط
format
: صيغة التاريخ.timezone
: المنطقة الزمنية للتاريخ.