התכונה 'הגבלת תאריך ושעה' ב-Access Context Manager מאפשרת לארגונים להגדיר אמצעי בקרה לגישה על סמך התאריך והשעה.
כשמעריכים גישה לפי עקרונות של אפס אמון, לעיתים קרובות יש צורך להגביל את גישת המשתמשים למשאבים לימים ולשעות ספציפיים. לדוגמה, יכול להיות שעובדים במשמרות יורשו לגשת למשאבים של החברה רק בשעות המשמרת שלהם, או שמשתמשים יקבלו גישה זמנית בין שעות מסוימות ביום.
כדי להחיל את התנאי של רמת הגישה לפי שעה ויום, משתמשים בפונקציות שמפורטות בטבלה הבאה. הפורמט של הפונקציות הוא function(timezone).
אפשר לציין את timezone כ-UTC, כאזורי זמן קבועים שהם שעות ודקות מפורשות של סטייה משעון UTC, או כשמות ארוכים של timezone כמו Europe/Paris, CET או US/Central. רשימה מלאה מופיעה בקטע Timezone בהגדרה של Common Express Language.
אם לא מציינים 'אזור זמן', ברירת המחדל של הביטוי היא UTC.
| תפקיד | תיאור | דוגמה |
|---|---|---|
getFullYear |
אחזור המספר שמייצג את השנה הנוכחית, למשל 2020. | השנה היא 2020? request.time.getFullYear("America/Los_Angeles") == 2020
|
getMonth |
שליפת החודש בשנה. ערכי החודש נעים בין 0 ל-11, כאשר 0 מייצג את ינואר ו-11 מייצג את דצמבר. | האם החודש הוא ינואר? request.time.getMonth("America/Los_Angeles") == 0
|
getDate |
שליפת התאריך בחודש. ערכי התאריך הם מ-1 עד 31, כאשר 1 הוא היום הראשון בחודש ו-31 הוא היום ה-31 בחודש. |
האם היום הוא הראשון בחודש? request.time.getDate("America/Los_Angeles") == 1
|
getDayOfMonth |
שליפת היום בחודש. ערכי היום נעים בין 0 ל-30, כאשר 0 הוא היום הראשון בחודש ו-30 הוא היום ה-31 בחודש. | האם היום הוא הראשון בחודש? request.time.getDayOfMonth("America/Los_Angeles") == 0 |
getDayOfWeek |
שליפת היום בשבוע. ערכי הימים נעים בין 0 ל-6, כאשר 0 הוא יום ראשון ו-6 הוא יום שבת. | היום יום שני? request.time.getDayOfWeek("America/Los_Angeles") == 1 |
getDayOfYear |
שליפת היום בשנה. ערכי הימים נעים בין 0 ל-365, כאשר 0 הוא היום הראשון בשנה ו-365 הוא היום ה-366 בשנה. |
האם זה היום הראשון של השנה? request.time.getDayOfYear("America/Los_Angeles") == 0
|
getHours |
שליפת השעה ביום. ערכי השעות נעים בין 0 ל-23, כאשר 0 מייצג את חצות ו-23 מייצג את 23:00. |
השעה 19:00? request.time.getHours("America/Los_Angeles") == 19 |
getMinutes |
שליפת הדקה בשעה. ערכי הדקות נעים בין 0 ל-59, כאשר 0 היא הדקה הראשונה ו-59 היא הדקה האחרונה של השעה. |
השעה עכשיו 19:30? request.time.getHours("America/Los_Angeles") == 19 && request.time.getMinutes("America/Los_Angeles") == 30 |
date |
הפונקציה מחזירה את חותמת הזמן שמייצגת את התאריך בנרמול לחצות UTC. | השעה הנוכחית לפי שעון UTC. request.time.date()
|
date(tz string) |
הפונקציה מחזירה את חותמת הזמן שמייצגת את התאריך בנרמול לחצות ביחס למחרוזת אזור הזמן <tz>. | השעה הנוכחית לפי שעון החוף המערבי.
|
timeOfDay |
מחזירה את google.type.TimeOfDay שמשויך לחותמת הזמן ב-UTC. |
השעה הנוכחית בפורמט UTC, למשל '09:30:00' request.time.timeOfDay() |
timeOfDay(tz string) |
הפונקציה מחזירה את הערך google.type.TimeOfDay שמשויך לחותמת הזמן, ביחס למחרוזת TimeZone <tz>. | השעה הנוכחית ביום לפי שעון החוף המערבי של ארה"ב, למשל '09:30:00' request.time.timeOfDay('America/Los_Angeles') |
between(start, stop)(לחותמת זמן) |
עבור חותמת זמן נתונה, הפונקציה מחזירה הפרמטרים 'start' ו-'stop' יכולים להיות | האם חותמת הזמן הנוכחית, לפי שעון החוף המערבי, היא בין 10 בינואר 2020 בשעה 00:00 (כולל) לבין 11 בינואר 2020 בשעה 00:00 (לא כולל)? request.time.date('08:00')
.between('2020-10-01T00:00:00+08:00', '2020-10-01T00:00:00+08:00')
|
between(start, stop string) (for TimeOfDay) |
עבור type.TimeOfDay או מחרוזת, שתומר ל-type.TimeOfDay.
|
האם השעה הנוכחית ביום, לפי שעון החוף המערבי, היא בין 09:30 (כולל) לבין 17:30 (לא כולל)? request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
|
בטבלה הבאה מופיעות דוגמאות לאופן השימוש בהגבלות על תאריכים ושעות:
| מדיניות לדוגמה | ביטוי |
|---|---|
| לאפשר לעובדים במשמרות לגשת למשאבים בימים שני עד שישי בין השעות 9:00 ל-17:00, למעט ב-4 ביולי. | אפשרות 1: request.time.getDayOfWeek("America/Los_Angeles") >= 1 && request.time.getDayOfWeek("America/Los_Angeles") <= 5 && request.time.getHours("America/Los_Angeles") >= 9 && request.time.getHours("America/Los_Angeles") <= 17 && !(request.time.getMonth("America/Los_Angeles") == 6 && request.time.getDayOfMonth("America/Los_Angeles") == 3)
אפשרות 2:
|
| אפשר גישה זמנית למשאבים ב-1 במרץ 2020, בין השעות 22:00 לחצות. | אפשרות 1: אפשרות 2:
|
בדוגמאות הבאות מופיעים ביטויים שמשתמשים בחלק מהפונקציות כדי לתעד טווחי זמן ספציפיים:
מציינים את הטווח בשעות הפעילות
פורמט התאריך והשעה הוא 'HH:MM:SS' והוא תואם לתקן RFC 3339.
request.time.timeOfDay('America/Los_Angeles').between('09:30:00', '17:30:00')
request.time.date('America/Los_Angeles')
.between('01-10-2020T00:00:00+08:00', '01-11-2020T00:00:00-07:00')
ציון ימים ספציפיים בחודש, שבוע ראשון
(הערה: יש תמיכה בפורמט חלופי של אזור זמן)
request.time.getDayOfMonth('America/Los_Angeles') < 7
הגדרת טווחי תאריכים ספציפיים, שנתיים
לדוגמה, לדיווח רבעוני.
request.time.date('Asia/Hong_Kong').between(
request.time.getFullYear('08:00') + '-12-15T00:00:00+08:00',
request.time.getFullYear('08:00')+1 + '-01-01T00:00:00+08:00')