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

click fraud protection

פרל יש פונקציה מובנית שימושית לאיתור התאריך והשעה הנוכחיים בתסריטים. עם זאת, כשאנחנו מדברים על מציאת השעה, אנו מדברים על הזמן שנקבע כרגע במחשב שמריץ את התסריט. לדוגמה, אם אתה מפעיל את סקריפט ה- Perl שלך במחשב המקומי שלך, זמן זמן יחזיר את השעה הנוכחית שקבעת וכנראה שתגדיר לאזור הזמן הנוכחי שלך.

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

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

#! / usr / local / bin / perl
@ timeData = זמן זמן (זמן);
print join ('', @ timeData);

אתה צריך לראות משהו דומה לזה, אם כי המספר יכול להיות שונה מאוד.

20 36 8 27 11 105 2 360 0

אלמנטים אלה של השעה הנוכחית הם לפי הסדר:

  • שניות אחרי הדקה
  • instagram viewer
  • דקות אחר השעה
  • שעות אחר חצות
  • יום החודש
  • חודשים שחלפו מתחילת השנה
  • מספר השנים מאז 1900
  • מספר הימים מתחילת השבוע (ראשון)
  • מספר הימים מתחילת השנה
  • אם כן או לא שעון קיץ פעיל

אז אם נחזור לדוגמה וננסה לקרוא אותה, תראה שהשעה 08:36:20 בבוקר ביום 27 בדצמבר 2005, זה יומיים אחרון ביום ראשון (שלישי), ועברו 360 יום מאז תחילת ה- שנה. שעון הקיץ אינו פעיל.

הפיכת זמן הקריאה לפרל מקומי

כמה מהאלמנטים במערך שחוזר זמן מקומי מעט מביכים לקריאה. מי היה חושב על השנה הנוכחית מבחינת מספר השנים שחלפו 1900? בואו נסתכל על דוגמא שמבהירה את התאריך והשעה שלנו.

 #! / usr / local / bin / perl

 @months = qw (ינואר פברואר מרץ אפריל מאי יוני יולי יולי אוגוסט ספטמבר אוקטובר דצמבר);

 @weekDays = qw (יום א 'יום ג' רביעי ה 'ו' א 'א');

 ($ שני, $ דקה, $ שעה, $ dayOfMonth, $ חודש, $ yearOfset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ $ = 1900 + $ year אופסט;

 $ theTime = "$ שעה: $ דקה: $ שנייה, $ שבוע ימים [$ dayOfWeek] $ חודשים [$ חודש] $ dayOfMonth, $ year";

 הדפס $ theTime; 

כשאתה מפעיל את התוכנית, אתה אמור לראות תאריך ושעה הרבה יותר קריאים כמו זה:

 9:14:42, רביעי 28 בדצמבר 2005 

אז מה עשינו כדי ליצור גרסה קריאה יותר זו? ראשית, אנו מכינים שני מערכים עם שמות החודשים וימי השבוע.

 @months = qw (ינואר פברואר מרץ אפריל מאי יוני יולי יולי אוגוסט ספטמבר אוקטובר דצמבר);

 @weekDays = qw (יום א 'יום ג' רביעי ה 'ו' א 'א'); 

מכיוון שהפונקציה המקומית מחזירה אלמנטים אלה בערכים שנעים בין 0-11 ו- 0-6 בהתאמה, הם מועמדים מושלמים למערך. ניתן להשתמש בערך המוחזר על ידי זמן הגעה ככתובת מספרית כדי לגשת לרכיב הנכון במערך.

 $ חודשים [$ חודש] $ שבוע ימים [$ dayOfWeek]


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

 ($ שני, $ דקה, $ שעה, $ dayOfMonth, $ חודש, $ yearOfset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();


עלינו גם להתאים את ערך השנה. זכור כי זמן המקום מחזיר את מספר השנים שחלפו מאז 1900, כך שכדי למצוא את השנה הנוכחית, עלינו להוסיף 1900 לערך שניתן לנו.

 $ $ = 1900 + $ year אופסט;

כיצד ניתן לדעת את הזמן הקיים ב- GM בפרל

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

לפרל יש פונקציית ספר זמן מועילה שנייה שעובדת בדיוק באותו אופן כמו זמן זמן, אך במקום להחזיר את הזמן הקבוע למכונה שלך אזור זמן, זה חוזר זמן אוניברסלי מתואם (קיצור של UTC, נקרא גם זמן ממוצע של גריניץ 'או GMT). פשוט די נקרא הפונקציה gmtime.

 #! / usr / local / bin / perl

 @ timeData = gmtime (זמן);

 print join ('', @ timeData); 

מלבד העובדה שהזמן שיוחזר יהיה זהה בכל מכונה וב- GMT, אין הבדל בין פונקציות ה- gmtime לזמן המקומי. כל הנתונים וההמרות נעשים באותה צורה.

 #! / usr / local / bin / perl

 @months = qw (ינואר פברואר מרץ אפריל מאי יוני יולי יולי אוגוסט ספטמבר אוקטובר דצמבר);

 @weekDays = qw (יום א 'יום ג' רביעי ה 'ו' א 'א');

 ($ שני, $ דקה, $ שעה, $ dayOfMonth, $ חודש, $ yearOfset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ $ = 1900 + $ year אופסט;

 $ theGMTime = "$ שעה: $ דקה: $ שנייה, $ שבועDays [$ dayOfWeek] $ חודשים [$ חודש] $ dayOfMonth, $ year";

 הדפס $ theGMTime; 

  1. localtime יחזיר את השעה המקומית הנוכחית במחשב שמריץ את הסקריפט.
  2. gmtime יחזיר את הזמן הממוצע אוניברסלי של גריניץ ', או GMT (או UTC).
  3. יתכן וערכי ההחזר לא בדיוק מה שאתה מצפה, לכן הקפד להמיר אותם לפי הצורך.
instagram story viewer