שינוי אובייקטים מסוג DateTime
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 50 מתוך 68.
לאחר שיש לך אובייקט DateTime, לעיתים קרובות צריך לשנות אותו כדי שייצג רגע אחר בזמן. המתודה modify() מאפשרת לך להוסיף זמן לאובייקט DateTime או להפחית ממנו זמן באמצעות ביטויים בשפה טבעית, וכך חישובי תאריכים נעשים אינטואיטיביים וקריאים.
המתודה modify() מקבלת את אותם סוגי מחרוזות שעובדות עם strtotime(), כגון '+1 day', '-2 weeks' או 'next Friday'. בניגוד ליצירת אובייקט חדש בכל פעם, המתודה משנה ישירות את אובייקט DateTime הקיים, דבר יעיל לפעולות תאריך עוקבות.
<?php
$date = new DateTime();
echo $date->format('Y-m-d'); // התאריך של היום
$date->modify('+1 week');
echo $date->format('Y-m-d'); // בעוד שבוע מהיום
$date->modify('-3 days');
echo $date->format('Y-m-d'); // בעוד 4 ימים מהיום
?>הגישה הזאת מעניקה לך גמישות רבה בחישובי תאריכים. אפשר לשרשר כמה שינויים או להשתמש בביטויים מורכבים כמו '+2 months -1 day' כדי לבצע חישובי תאריכים מתוחכמים, תוך שמירה על קוד ברור וקל לתחזוקה.
אתגר
קלתקבלו שתי קלטים: מחרוזת תאריך בתבנית Y-m-d H:i:s ומחרוזת שינוי. הקלט הראשון הוא תאריך ושעה ספציפיים (לדוגמה: 2024-03-15 14:30:25), והקלט השני הוא ביטוי שינוי כגון +1 week, -3 days או +2 months.
קראו את שני הקלטים, צרו אובייקט DateTime באמצעות מחרוזת התאריך, השתמשו בשיטה modify() כדי להחיל את ביטוי השינוי על אובייקט DateTime, והדפיסו את התאריך לאחר השינוי בתבנית Y-m-d H:i:s.
תבנית הקלט:
- שורה ראשונה: מחרוזת תאריך בתבנית
Y-m-d H:i:s(לדוגמה:2024-03-15 14:30:25) - שורה שנייה: מחרוזת שינוי (לדוגמה:
+1 weekאו-3 daysאו+2 months)
הפלט הצפוי: התאריך לאחר השינוי, בפורמט Y-m-d H:i:s
נסו בעצמכם
<?php
// קראו את מחרוזת התאריך
$dateString = trim(fgets(STDIN));
// קראו את מחרוזת השינוי
$modificationString = trim(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה
// צרו אובייקט DateTime, החילו את השינוי ועצבו את התוצאה
// הציגו את התאריך לאחר השינוי
echo $modifiedDate;
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה7עבודה עם תאריכים ושעות
הפונקציה 'date()'חותמות זמן של Unix עם 'time()'מבוא לאובייקט DateTimeעיצוב אובייקטים מסוג DateTimeשינוי אובייקטים מסוג DateTimeסיכום: חישובי תאריכים2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין