time#
מחזיר את זמן ה־wall-clock הנוכחי כמספר שלם של שניות מאז epoch המערכת.
time הוא נקודת ההתחלה לכל פעולת תאריך וזמן אחרת ב־Perl. הוא קורא את שעון המערכת ומחזיר מספר שלם יחיד - מספר השניות הלא־מעוברות מאז ה־epoch, שהוא בכל פלטפורמה נתמכת 00:00:00 UTC, 1 January 1970 (זמן Unix). התוצאה מתאימה להזנה ישירה ל־gmtime או localtime כדי לפרק אותה לתאריך קלנדרי, או לחיסור שתי קריאות כדי למדוד זמן שעבר.
תקציר#
time
מה מקבלים בחזרה#
מספר שלם פשוט: שניות מאז 1970-01-01 00:00:00 UTC, מקוצץ (לא מעוגל) לכיוון אפס. אין דיוק תת־שנייתי - שתי קריאות באותה שנייה מחזירות את אותו ערך. לגרנולריות במילישנייה או מיקרושנייה, השתמש ב־Time::HiRes::time.
time אינו מקבל ארגומנטים; המילה החשופה היא הקריאה כולה. כתיבת time() גם בסדר ולעיתים ברורה יותר ליד קריאות פונקציה אחרות.
דוגמאות#
קריאה גולמית של השעון:
my $now = time;
print "$now\n"; # e.g. 1745424000
תאריך וזמן מקומיים קריאים לבן־אנוש - time משתלב עם localtime בהקשר סקלר עבור מחרוזת מעוצבת:
print scalar localtime, "\n"; # Wed Apr 23 12:00:00 2026
אותה קריאה מפורקת לשדות לאריתמטיקה קלנדרית:
my ($sec, $min, $hour, $mday, $mon, $year) = localtime time;
$year += 1900;
$mon += 1;
printf "%04d-%02d-%02d %02d:%02d:%02d\n",
$year, $mon, $mday, $hour, $min, $sec;
מדידת זמן־שעבר סביב בלוק של עבודה - הסטופר הניבי בשנייה־שלמה:
my $t0 = time;
do_work();
my $elapsed = time - $t0;
print "took ${elapsed}s\n";
UTC במקום זמן מקומי - הזן את אותו מספר שלם ל־gmtime:
my @utc = gmtime time; # same fields, UTC-based
print scalar gmtime, "\n"; # Wed Apr 23 10:00:00 2026
מקרי קצה#
אין רזולוציה תת־שנייתית. קריאות גב־אל־גב באותה שנייה מחזירות את אותו מספר שלם, כך ש־
time - $t0עבור עבודה מהירה מדפיס0. השתמש ב־Time::HiRes::timeעבור קריאת נקודה־צפה עם דיוק מיקרושנייה:use Time::HiRes qw(time); my $t0 = time; # now a float do_work(); printf "%.6f s\n", time - $t0;
שניות מעוברות. הספירה המוחזרת אינה כוללת שניות מעוברות; זה ״שניות מאז ה־epoch״ של POSIX כפי שמדווח על־ידי הקרנל. קוד שמחסר שתי קריאות
timeמודד שניות wall-clock שעברו, לא שניות SI, על־פני גבול של שנייה מעוברת.רוחב מספר שלם. הערך הוא מספר שלם עם סימן רחב מספיק עבור חותמות זמן נוכחיות ועתידיות־רחוקות בכל פלטפורמה נתמכת (64־ביט). בעיית 2038 אינה חלה כאן.
אזור זמן.
timeעצמו אגנוסטי לאזור זמן - המספר השלם מציין רגע יחיד ב־UTC. אזורי זמן נכנסים לתמונה רק כשממירים דרךlocaltime;gmtimeנשאר ב־UTC.מונוטוניות.
timeעוקב אחר שעון המערכת. אם השעון מקודם אחורה (התאמת NTP, שינוי ידני), קריאה מאוחרת יותר עשויה להחזיר ערך קטן יותר מקריאה מוקדמת יותר. למדידות של זמן שעבר שאסור להן ללכת אחורה, השתמש בשעון מונוטוני דרךTime::HiRes::clock_gettime(CLOCK_MONOTONIC).באריתמטיקה.
time + 3600הוא שעה מעכשיו;time - 86400הוא 24 שעות לפני. הזן את התוצאה ל־localtimeאוgmtimeכדי להציג אותה.
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.
ראו גם#
gmtime- מפרק ערךtimeלשדות קלנדריים של UTC (או מחרוזת מעוצבת בהקשר סקלר)localtime- אותו דבר, אך באזור הזמן המקומי; השותף הנפוץ ביותר ל־timesleep- משהה למספר שלם של שניות; משתלב באופן טבעי עםtimeלתזמון גסalarm- מתזמןSIGALRMלמספר נתון של שניות בעתידTime::HiRes::time- שניות נקודה־צפה עם רזולוציית מיקרושנייה כשגרנולריית שנייה־שלמה אינה מספיקה