עמוד ראשי מירק סקריפטינג מדריכים [מדריך] מזהים של זמן ותאריך

[מדריך] מזהים של זמן ותאריך

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

הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 21 אוגוסט 2012, 12:58
המדריך נכתב על ידי Agent Mike לאתר מירקס הישן.


מזהים של זמן ותאריך
מזהים אלו עוזרים לנו לקבל ולעבד מידע שקשור לזמן ולתאריך שקבוע במחשבים, במזהים אלו ניתן להשתמש בדברים מגוונים, להראות את זמן הAway, כמה זמן המחשב היה דלוק, מה השעה עכשיו, האם עכשיו שעון חורף/קיץ, וכל מה שעולה בדעתכם שקשור לזמנים.

ctime$
המזהה הראשון שעליו אני אדבר הוא

$ctime

ישנן שתי אפשרויות להשתמש בו:

אפשרות ראשונה: $ctime
אפשרות שנייה: $ctime(text)


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

set %away_time $ctime

וכאשר נחזור מ Away

set %away_time $calc($ctime - %away_time)

בדוגמא ניתן לראות שהשתמשי במזהה calc$ שאותו אני רק אזכיר בקצרה, זהו מזהה שהוא בעצם מחשבון (Calculator), שמאפשר לנו לעשות חישובים חשבוניים.

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

$ctime(January 1 1970 00:00:00)
$ctime(3rd August 1987 3:46pm)
$ctime(21/4/72 1:30:37)
$ctime(Wed 1998-3-27 21:16)


(מי ששואל עכשיו אם הדוגמא הראשונה תעבוד, אז התשובה היא לא, אבל זה טוב שהוא שם לב )

asctime$
עוד מזהה חשוב, שעליו מתבססים מזהים אחרים הינו asctime$, כי בו בעצם מוגדר התחביר (Syntax) של הזמנים, מיד אני אסביר ע"י דוגמאות, 3 דרכים שבו ניתן להשתמש.
אם אנחנו לא מספקים לו שום קלט(מה שבסוגריים) הוא יחזיר לנו את הזמן והתאריך הנוכחיים
המבנה הבסיסי:

$asctime(N,format)

הערכים N ו Format הינם לא חובה, וניתן לעשות גם כך:

$asctime


שיחזיר:

Tue Jan 11 23:53:29 2005



N - מספר השניות מחצות בראשון בינואר 1970 שאותן רוצים לקבל במבנה "קריא" (מה שאנחנו מקבלים מ ctime$ בעצם)
Format - עיצוב המבנה של התאריך/זמן, לפי המשתנים-ערכים הבאים:
(כאשר נתון רק N, יהיה העיצוב של ברירת המחדל, וכאשר נתון רק Format, זה יהיה על הזמן הנוכחי)

שנה   yy     05
      yyyy   2005
חודש  m      1
      mm     01
      mmm    Jan
      mmmm   January
יום   d      9
      dd     09
      ddd    Mon
      dddd   Monday
שעות  h      5
      hh     05
      H      17
      HH     17
דקות  n      1
      nn     01
שניות s      1
      ss     01
AM/PM t      a/p
      tt     am/pm
      T      A/P
      TT     AM/PM
מסודר oo     st/nd/rd/thא
אזור זמן   z      +2
           zz    +0200
           zzz   +0200 GMT


הטור השמאלי ברשימה הזאת הינה סוג המידע, הטור האמצעי הינו מה צריך לכתוב, והטור הימני הינו דוגמא במה זה יוחלף.
נא לשים לב לפרטים כמו אותיות גדולות/קטנות, כי בנושא הזה, יש ביניהן הבדל.
אני מניח שכמה כרגע שואלים מה זה הoo (מסודר-Ordinal), כשאני מוסיפים את זה בצמוד לערך אחר, הוא מוסיף לו את הסיומת שלו, לדוגמא אם זה 1 יתווסף אליו st, כדי שיהיה 1st, למספר שתיים, יתווסף nd ויהיה 2nd, וכו' (דוגמא בהמשך).
אם נחזור לדוגמא הקודמת, ונרצה גם להודיע שנגמר ה Away ומאיזה שעה היה ה Away, ניתן לעשות כך:

set %away_time $ctime


וכאשר נחזור מ Away

amsg I have been away since $asctime(%away_time,mmm doo yyyy HH:nn:ss zzzz) for $calc($ctime - %away_time) seconds.


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

//echo -a $asctime(mmm doo yyyy HH:nn:ss zzzz)


עכשיו אחרי שכיסינו את המזהים הבעיתיים, השאר יהיה קל.
כאשר נוצר ה mIRC, הבין היוצר(Khaled - או בשפתנו, חאלד), שאם מישהו רוצה להציג רק את הזמן, זה יכול להיות קצת מעיק להשתמש כל הזמן ב asctime$ ולכן הוא יצר מזהים יותר נוחים לשימוש, שכל אחד מהם הוא מקבילה למבנה מסוים של asctime$:

(== מציין שוויון)
$date == $asctime(dd/mm/yyyy)
$adate == $asctime(mm/dd/yyyy) (לאמריקאים שבינינו)
$day == $asctime(dddd)
$fulldate == $asctime(ddd mmm dd HH:nn:ss yyyy)
$time == $asctime(HH:nn:ss)
$timestamp == $asctime([HH:nn])



duration$
המבנה שלו:

$duration(seconds,N)


מזהה זה "יתרגם" לנו כמות של שניות לשבועות/ימים/שעות/דקות/שניות.
seconds - מספר השניות שאותן הוא "ישנה".
N - ערך לא חובה, אם הוא שווה ל 2, התשובה לא תכלול שניות, ואם הוא שווה ל 3, התשובה תהיה במבנה של שניות:דקות:שעות (לפי הערכים הנ"ל).
דוגמאות:

$duration(3661) == 1hr 1min 1sec
$duration(3661,2) == 1hr 1min
$duration(3661,3) == 01:01:01


ובנוסף, ניתן גם להשתמש בזה הפוך - לתת לו כמות של שבועות/ימים/שעות/דקות/שניות, והוא יתרגם אותם לכמות של שניות
$duration(2hr 32min 55sec) == 9175

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

set %away_time $ctime


וכאשר נחזור מ Away

amsg I have been away since $asctime(%away_time,mmm doo yyyy HH:nn:ss zzzz) for $duration($calc($ctime - %away_time)) .



uptime$

$uptime(mirc|server|system,N)

בעזרת המזהה הזה, אנחנו יכולים לדעת כמה זמן המירק/המחשב היו דלוקים, או כמה זמן אתם מחוברים לשרת מסוים :

$uptime(mirc) - כמה זמן המירק דלוק
$uptime(system) - כמה זמן המערכת(המחשב) דלוק
$uptime(server) - הזמן שאתם מחבורים לשרת


N - לא חובה, כאשר הוא לא קיים, הזמנים יהיו באלפיות השנייה, כאשר הוא שווה ל 1, התשובה תהיה באותו מבנה של duration$, כאשר N שווה ל 2, יהיה אותו מבנה כמו של duration$ אך ללא שניות, וכאשר N שווה ל 3, הזמן יהיה בשניות, ולא באלפיות השנייה.

מזהים נוספים
daylight$ - במקרה של שעון קיץ, יחזיר את מספר השניות שהבן הזמן "זז", ואם זה שעון חורף, יחזיר 0.
gmt$ - יחזיר את השעה באזור הזמן GMT לפי אותו מבנה של ctime$
idle$ - יחזיר את זמן האי-עבודה (בשניות) של ה mIRC, אותה תגובה שמקבלים מ CTCP Finger.
online$ - מחזיר את הזמן (בשניות) שעבר בדיאלוג של שעון העצר המקוון (הכפתור של הסטופר בסרגל הכלים, בין ספר הכתובות לצבעים).
ticks$ - מחזיר את מספר ה"טיקים" שעברו מאז שהמחשב נדלק (או במילים פשוטות: כמה אלפיות השנייה המחשב היה דלוק), משמש לחישובי זמן יותר מדויקים, לדוגמא אם בונים משחק ורוצים למדוד זמני תגובה או למדידת משך זמן של פעולות במירק.
timestampfmt$ - מחזיר את מבנה חותמת הזמן כפי שמצוינת באפשריות>הודעות.
timezone$ - מחזיר את אזור הזמן שאנחנו נמצאים בו (בשניות) ביחס ל GMT. (התקין לישראל בחורף זה 7200- = שעתיים).

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

אני לא ציינתי את המזהים הבאים:
timer$
ltimer$
ctimer$

מהסיבה שאני חושב שהם שייכים למדריך על טיימרים ולא למדריך הזה.

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

נכתב ע"י Agent_Mike לפורום mIRCx.

חזור אל מדריכים

cron