שינוי אובייקטים מסוג 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 אונליין