Menu
Coddy logo textTech

קבלת הזמן הנוכחי

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 58 מתוך 68.

כשעובדים עם תאריכים ושעות בתוכניות Go, תצטרכו להשתמש בחבילה המובנית time של Go. החבילה הזו מספקת את כל הפונקציונליות הדרושה לעבודה עם פעולות הקשורות לזמן.

נקודת ההתחלה הנפוצה ביותר היא קבלת השעה הנוכחית. Go הופכת את זה לפשוט באמצעות הפונקציה time.Now():

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)
}

הפונקציה time.Now() מחזירה אובייקט time.Time שמייצג את הרגע הנוכחי. כשמדפיסים את האובייקט הזה, הוא מציג את התאריך והשעה בפורמט קריא, כולל פרטי אזור הזמן.

אובייקט time.Time הזה מכיל את כל המידע על אותו רגע מסוים — השנה, החודש, היום, השעה, הדקה, השנייה ואפילו ננו־שניות. תשתמשו בו כבסיס לכל פעולות הזמן האחרות ב-Go.

challenge icon

אתגר

קל

צרו יישום למעקב אחר זמן, שקולט את השעה הנוכחית ומציג אותה במספר פורמטים. האתגר הזה יבחן את היכולת שלכם להשתמש בפונקציה time.Now() ולעבוד עם אובייקטים מסוג time.Time כדי לחלץ רכיבים שונים מהרגע הנוכחי.

תקבלו קלט אחד:

  • מחרוזת המכילה בקשות להצגת פורמטים, המופרדות בפסיקים, בתבנית "format1,format2,format3" (לדוגמה, "full,date,time,year,month,day")

עליכם:

  1. להשתמש ב-time.Now() כדי ללכוד את השעה הנוכחית ולאחסן אותה במשתנה
  2. להציג את כותרת היישום: "=== TIME TRACKER APPLICATION ==="
  3. להציג את האישור על לכידת חותמת הזמן: "Current time captured successfully"
  4. לנתח את הקלט באמצעות פיצול לפי פסיקים, כדי לקבל בקשות נפרדות לפורמטים
  5. להציג את כותרת הפורמטים: "Displaying time in requested formats:"
  6. עבור כל בקשה לפורמט, להציג את פרטי הזמן בהתאם לפורמט המבוקש:
    • עבור "full": להציג "Full timestamp: [complete_time_object]"
    • עבור "date": להציג "Date only: [year]-[month]-[day]" (להשתמש ברכיבים של המתודה Date())
    • עבור "time": להציג "Time only: [hour]:[minute]:[second]" (להשתמש במתודות Hour(), Minute(), Second())
    • עבור "year": להציג "Year: [year_value]" (להשתמש במתודה Year())
    • עבור "month": להציג "Month: [month_name]" (להשתמש במתודה Month())
    • עבור "day": להציג "Day: [day_value]" (להשתמש במתודה Day())
    • עבור "weekday": להציג "Weekday: [weekday_name]" (להשתמש במתודה Weekday())
    • עבור "unix": להציג "Unix timestamp: [unix_seconds]" (להשתמש במתודה Unix())
  7. לספור ולהציג נתונים סטטיסטיים:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. להציג פרטי זמן נוספים:
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (להשתמש במתודה Nanosecond())
    • "- Location: [timezone_location]" (להשתמש במתודה Location())
    • "- Is zero time: [true_or_false]" (להשתמש במתודה IsZero())
  9. להציג את הודעת הסיום: "Time tracking completed - all requested formats processed"

השתמשו בחבילה time כדי לעבוד עם אובייקטים של זמן, בחבילה strings כדי לפצל את מחרוזת הקלט, ובחבילה fmt כדי להפיק פלט מעוצב. זכרו ש-time.Now() מחזירה אובייקט מסוג time.Time, שמכיל את כל המידע על הרגע הנוכחי, ושאפשר לחלץ ממנו רכיבים מסוימים באמצעות המתודות השונות הזמינות באובייקט. האתגר הזה מדגים כיצד ללכוד את השעה הנוכחית ולחלץ פרטי מידע שונים מאובייקט יחיד מסוג time.Time.

נסו בעצמכם

package main

import (
	"fmt"
	"strings"
	"time"
)

func main() {
	// קרא את הקלט
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// השתמש בזמן קבוע לקבלת פלט עקבי (זמן הייחוס של Go)
	// במקום time.Now(), השתמש ב-time.Date לקבלת תוצאות צפויות
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// פצל את בקשות העיצוב
	formats := strings.Split(formatRequests, ",")
	
	// TODO: כתוב את הקוד שלך למטה
	// הצג את כותרת היישום
	// הצג אישור לקליטת חותמת הזמן
	// הצג את כותרת הפורמטים
	// עבד כל בקשת עיצוב והצג את התוצאה בהתאם
	// השתמש ב-map כדי לעקוב אחר רכיבים ייחודיים לצורך ספירה
	// השתמש בעיצוב מתאים (למשל, %02d למספרים המרופדים באפסים)
	// הצג נתונים סטטיסטיים מסכמים
	// הצג פרטי זמן נוספים
	// הצג הודעת סיום
	
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Go אונליין