calendar --- توابع عمومی مرتبط با گاه‌شماری

کد منبع: Lib/calendar.py


این ماژول به شما امکان می‌دهد گاه‌شماری‌هایی مانند برنامه‌ی cal یونیکس را خروجی دهید و توابع مفید دیگری مرتبط با گاه‌شماری ارائه می‌کند. به‌طور پیش‌فرض، در این گاه‌شماری‌ها دوشنبه اولین روز هفته و یکشنبه آخرین روز هفته است (بر اساس قرارداد اروپایی). برای تنظیم اولین روز هفته روی یکشنبه (۶) یا هر روز دیگری از هفته، از setfirstweekday() استفاده کنید. پارامترهایی که تاریخ‌ها را مشخص می‌کنند، به‌صورت عدد صحیح داده می‌شوند. برای قابلیت‌های مرتبط، ماژول‌های datetime و time را نیز ببینید.

توابع و کلاس‌های تعریف‌شده در این ماژول از یک گاه‌شماری آرمانی استفاده می‌کنند، یعنی گاه‌شماری میلادی کنونی که به‌طور نامحدود در هر دو جهت گسترش‌یافته است. این با تعریف گاه‌شماری «میلادی تعمیم‌یافته» (proleptic Gregorian) در کتاب «Calendrical Calculations» نوشته‌ی Dershowitz و Reingold مطابقت دارد، که در آن این گاه‌شماری، گاه‌شماری پایه برای همه‌ی محاسبات است. سال‌های صفر و منفی مطابق تجویز استاندارد ISO 8601 تفسیر می‌شوند. سال ۰ برابر با ۱ قبل از میلاد است، سال منفی ۱ برابر با ۲ قبل از میلاد است، و به همین ترتیب.

class calendar.Calendar(firstweekday=0)

یک شیء Calendar ایجاد می‌کند. firstweekday یک عدد صحیح است که اولین روز هفته را مشخص می‌کند. MONDAY برابر 0 است (پیش‌فرض)، SUNDAY برابر 6 است.

یک شیء Calendar چندین متد ارائه می‌دهد که می‌توان از آن‌ها برای آماده‌سازی داده‌های گاه‌شماری برای قالب‌بندی استفاده کرد. این کلاس به‌خودی‌خود هیچ قالب‌بندی‌ای انجام نمی‌دهد. این وظیفه‌ی زیرکلاس‌ها است.

نمونه‌های Calendar دارای متدها و ویژگی‌های زیر هستند:

firstweekday

نخستین روز هفته به‌صورت عدد صحیح (۰--۶).

این ویژگی را همچنین می‌توان به‌ترتیب با setfirstweekday() و getfirstweekday() تنظیم و خواند.

getfirstweekday()

یک int برای اولین روز هفته‌ی کنونی (0--6) برمی‌گرداند.

معادل خواندن ویژگی firstweekday است.

setfirstweekday(firstweekday)

اولین روز هفته را روی firstweekday، که به‌صورت یک int (۰--۶) ارسال می‌شود، تنظیم می‌کند.

دقیقاً معادل تنظیم ویژگی firstweekday است.

iterweekdays()

یک پیمایش‌گر برای شماره‌های روز هفته که برای یک هفته استفاده خواهد شد، برمی‌گرداند. اولین مقدار این پیمایش‌گر با مقدار ویژگی firstweekday یکسان خواهد بود.

itermonthdates(year, month)

یک پیمایش‌گر برای ماه month (۱ تا ۱۲) در سال year برمی‌گرداند. این پیمایش‌گر تمام روزهای ماه (به‌صورت اشیای datetime.date) و تمام روزهای پیش از شروع ماه یا پس از پایان ماه را که برای داشتن یک هفته کامل لازم هستند برمی‌گرداند.

itermonthdays(year, month)

یک پیمایش‌گر برای ماه month در سال year برمی‌گرداند، مشابه itermonthdates()، اما به بازه‌ی datetime.date محدود نیست. روزهای برگردانده‌شده صرفاً شماره‌های روز ماه خواهند بود. برای روزهای خارج از ماه مشخص‌شده، شماره‌ی روز 0 است.

itermonthdays2(year, month)

یک پیمایش‌گر مشابه itermonthdates() برای ماه month در سال year برمی‌گرداند، اما محدود به محدوده‌ی datetime.date نیست. روزهای برگردانده‌شده تاپل‌هایی شامل شماره‌ی روز ماه و شماره‌ی روز هفته خواهند بود.

itermonthdays3(year, month)

یک پیمایش‌گر برای ماه month در سال year برمی‌گرداند، مشابه itermonthdates()، اما به بازه‌ی datetime.date محدود نیست. روزهای برگردانده‌شده تاپل‌هایی شامل شماره‌ی سال، شماره‌ی ماه و شماره‌ی روز ماه خواهند بود.

اضافه شده در نسخه‌ی 3.7.

itermonthdays4(year, month)

یک پیمایش‌گر برای ماه month در سال year مشابه itermonthdates() برمی‌گرداند، اما به محدوده‌ی datetime.date محدود نیست. روزهای برگردانده‌شده تاپل‌هایی شامل شماره‌های سال، ماه، روز ماه و روز هفته خواهند بود.

اضافه شده در نسخه‌ی 3.7.

monthdatescalendar(year, month)

فهرستی از هفته‌های ماه month از سال year را به‌صورت هفته‌های کامل برمی‌گرداند. هفته‌ها فهرست‌هایی از هفت شیء datetime.date هستند.

monthdays2calendar(year, month)

فهرستی از هفته‌های ماه month از سال year را به‌صورت هفته‌های کامل برمی‌گرداند. هفته‌ها فهرست‌هایی از هفت تاپل از شماره‌های روز و شماره‌های روز هفته هستند.

monthdayscalendar(year, month)

فهرستی از هفته‌های ماه month از سال year را به‌صورت هفته‌های کامل برمی‌گرداند. هفته‌ها فهرست‌هایی از هفت شماره‌ی روز هستند.

yeardatescalendar(year, width=3)

داده‌های سال مشخص‌شده را به‌صورت آماده برای قالب‌بندی برمی‌گرداند. مقدار بازگشتی، فهرستی از ردیف‌های ماه است. هر ردیف ماه شامل حداکثر width ماه است (پیش‌فرض ۳). هر ماه شامل بین ۴ تا ۶ هفته است و هر هفته شامل ۱ تا ۷ روز است. روزها اشیای datetime.date هستند.

yeardays2calendar(year, width=3)

داده‌های سال مشخص‌شده را که برای قالب‌بندی آماده است برمی‌گرداند (مشابه yeardatescalendar()). ورودی‌های فهرست‌های هفته، تاپل‌هایی از شماره‌های روز و شماره‌های روز هفته هستند. شماره‌های روز خارج از این ماه صفر هستند.

yeardayscalendar(year, width=3)

داده‌های سال مشخص‌شده را به‌صورت آماده برای قالب‌بندی برمی‌گرداند (مشابه yeardatescalendar()). ورودی‌های فهرست‌های هفته، شماره‌های روز هستند. شماره‌های روز خارج از این ماه صفر هستند.

class calendar.TextCalendar(firstweekday=0)

این کلاس می‌تواند برای تولید گاه‌شماری‌های متنی ساده استفاده شود.

نمونه‌های TextCalendar متدهای زیر را دارند:

formatday(theday, weekday, width)

رشته‌ای را برمی‌گرداند که نمایانگر یک روز واحد است و با width داده‌شده قالب‌بندی شده است. اگر theday برابر 0 باشد، رشته‌ای از فاصله‌ها با عرض مشخص‌شده برمی‌گرداند که نمایانگر یک روز خالی است. پارامتر weekday استفاده نمی‌شود.

formatweek(theweek, w=0)

یک هفته واحد را به‌صورت یک رشته بدون خط جدید برمی‌گرداند. اگر w داده شود، عرض ستون‌های تاریخ را مشخص می‌کند؛ این ستون‌ها وسط‌چین هستند. به اولین روز هفته بستگی دارد، همان‌گونه که در سازنده تعیین‌شده است یا با متد setfirstweekday() تنظیم‌شده است.

formatweekday(weekday, width)

رشته‌ای را برمی‌گرداند که نشان‌دهنده نام یک روز هفته است و با عرض مشخص‌شده width قالب‌بندی‌شده است. پارامتر weekday یک عدد صحیح است که روز هفته را نشان می‌دهد، به‌طوری‌که 0 دوشنبه و 6 یکشنبه است.

formatweekheader(width)

رشته‌ای حاوی ردیف سرآیند نام روزهای هفته را برمی‌گرداند که با width داده‌شده برای هر ستون قالب‌بندی شده است. این نام‌ها به تنظیمات locale بستگی دارند و تا عرض مشخص‌شده پر می‌شوند.

formatmonth(theyear, themonth, w=0, l=0)

گاه‌شماری یک ماه را در یک رشته چندخطی برمی‌گرداند. اگر w ارائه شود، عرض ستون‌های تاریخ را مشخص می‌کند؛ این ستون‌ها وسط‌چین هستند. اگر l داده شود، تعداد سطرهایی را که هر هفته استفاده خواهد کرد مشخص می‌کند. به اولین روز هفته بستگی دارد، همان‌طور که در سازنده مشخص شده یا توسط متد setfirstweekday() تنظیم می‌شود.

formatmonthname(theyear, themonth, width=0, withyear=True)

رشته‌ای برمی‌گرداند که نام ماه را به‌صورت وسط‌چین در عرض مشخص‌شده با width نشان می‌دهد. اگر withyear برابر True باشد، سال در خروجی گنجانده می‌شود. پارامترهای theyear و themonth به‌ترتیب سال و ماهِ نامی را که باید قالب‌بندی شود مشخص می‌کنند.

prmonth(theyear, themonth, w=0, l=0)

گاه‌شماری یک ماه را همان‌طور که توسط formatmonth() برگردانده می‌شود، چاپ کنید.

formatyear(theyear, w=2, l=1, c=6, m=3)

گاه‌شماریی با m ستون برای یک سال کامل را به‌عنوان یک رشته‌ی چندخطی برمی‌گرداند. پارامترهای اختیاری w، l و c به‌ترتیب برای عرض ستون تاریخ، تعداد سطرهای هر هفته و تعداد فاصله‌های بین ستون‌های ماه هستند. به اولین روز هفته بستگی دارد، همان‌طور که در سازنده مشخص شده یا با متد setfirstweekday() تنظیم شده است. اولین سالی که می‌توان برای آن گاه‌شماری تولید کرد، وابسته به پلتفرم است.

pryear(theyear, w=2, l=1, c=6, m=3)

گاه‌شماری یک سال کامل را همان‌طور که توسط formatyear() برگردانده می‌شود، چاپ کنید.

class calendar.HTMLCalendar(firstweekday=0)

این کلاس می‌تواند برای تولید گاه‌شماری‌های HTML استفاده شود.

نمونه‌های HTMLCalendar متدهای زیر را دارند:

formatmonth(theyear, themonth, withyear=True)

گاه‌شماری یک ماه را به‌صورت یک جدول HTML برمی‌گرداند. اگر withyear درست باشد، سال در سرآیند گنجانده می‌شود؛ در غیر این صورت، فقط از نام ماه استفاده می‌شود.

formatyear(theyear, width=3)

گاه‌شماری یک سال را به‌صورت یک جدول HTML برمی‌گرداند. width (با پیش‌فرض ۳) تعداد ماه‌ها در هر ردیف را مشخص می‌کند.

formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

گاه‌شماری یک سال را به‌عنوان یک صفحه HTML کامل بازمی‌گرداند. width (که پیش‌فرض آن ۳ است) تعداد ماه‌ها در هر ردیف را مشخص می‌کند. css نام شیوه‌نامه آبشاری مورد استفاده است. اگر نباید از شیوه‌نامه استفاده شود، می‌توان None را ارسال کرد. encoding کدگذاری مورد استفاده برای خروجی را مشخص می‌کند (که پیش‌فرض آن کدگذاری پیش‌فرض سیستم است).

formatmonthname(theyear, themonth, withyear=True)

نام یک ماه را به‌عنوان یک ردیف جدول HTML برمی‌گرداند. اگر withyear درست باشد، سال در ردیف گنجانده خواهد شد، در غیر این صورت فقط از نام ماه استفاده خواهد شد.

HTMLCalendar دارای ویژگی‌های زیر است که می‌توانید آن‌ها را بازنویسی کنید تا کلاس‌های CSS استفاده‌شده توسط گاه‌شماری را سفارشی‌سازی کنید:

cssclasses

فهرستی از کلاس‌های CSS که برای هر روز هفته استفاده می‌شوند. فهرست پیش‌فرض کلاس‌ها به صورت زیر است:

cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]

می‌توان سبک‌های بیشتری را برای هر روز اضافه کرد:

cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]

توجه داشته باشید که طول این فهرست باید ۷ آیتم باشد.

cssclass_noday

کلاس CSS برای روز هفته‌ای که در ماه گذشته یا آینده قرار دارد.

اضافه شده در نسخه‌ی 3.7.

cssclasses_weekday_head

فهرستی از کلاس‌های CSS که برای نام روزهای هفته در ردیف سرآیند استفاده می‌شوند. مقدار پیش‌فرض همان cssclasses است.

اضافه شده در نسخه‌ی 3.7.

cssclass_month_head

کلاس CSS سرآیند‌ی ماه (که توسط formatmonthname() استفاده می‌شود). مقدار پیش‌فرض "month" است.

اضافه شده در نسخه‌ی 3.7.

cssclass_month

کلاس CSS برای جدول کل ماه (که توسط formatmonth() استفاده می‌شود). مقدار پیش‌فرض "month" است.

اضافه شده در نسخه‌ی 3.7.

cssclass_year

کلاس CSS برای جدولِ جدول‌های کل سال (که توسط formatyear() استفاده می‌شود). مقدار پیش‌فرض "year" است.

اضافه شده در نسخه‌ی 3.7.

cssclass_year_head

کلاس CSS برای سرآیند جدولِ کل سال (که توسط formatyear() استفاده می‌شود). مقدار پیش‌فرض "year" است.

اضافه شده در نسخه‌ی 3.7.

توجه داشته باشید که اگرچه نام‌گذاری ویژگی‌های کلاس توصیف‌شده در بالا به‌صورت مفرد است (مثلاً cssclass_month cssclass_noday)، می‌توانید کلاس CSS تکی را با فهرستی از کلاس‌های CSS جداشده با فاصله جایگزین کنید، برای مثال:

text-bold text-red

در اینجا مثالی از نحوه‌ی سفارشی‌سازی HTMLCalendar آمده است:

class CustomHTMLCal(calendar.HTMLCalendar):
    cssclasses = [style + " text-nowrap" for style in
                  calendar.HTMLCalendar.cssclasses]
    cssclass_month_head = "text-center month-head"
    cssclass_month = "text-center month"
    cssclass_year = "text-italic lead"
class calendar.LocaleTextCalendar(firstweekday=0, locale=None)

این زیرکلاس از TextCalendar می‌تواند یک نام locale را در سازنده دریافت کند و نام ماه‌ها و روزهای هفته را در locale مشخص‌شده برمی‌گرداند.

class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)

این زیرکلاسِ HTMLCalendar می‌تواند در سازنده یک نام locale را بپذیرد و نام ماه‌ها و روزهای هفته را در locale مشخص‌شده برگرداند.

توجه

سازنده و متدهای formatweekday() و formatmonthname() این دو کلاس، تنظیم locale (locale) مربوط به LC_TIME را به‌طور موقت به locale داده‌شده تغییر می‌دهند. از آن‌جا که تنظیم locale فعلی یک تنظیم در سطح کل فرایند است، آن‌ها نخ‌ایمن نیستند.

برای گاه‌شماری‌های متنی ساده، این ماژول توابع زیر را فراهم می‌کند.

calendar.setfirstweekday(firstweekday)

روز هفته را برای آغاز هر هفته تنظیم می‌کند (0 دوشنبه است، 6 یکشنبه است). مقادیر MONDAY، TUESDAY، WEDNESDAY، THURSDAY، FRIDAY، SATURDAY و SUNDAY برای سهولت ارائه شده‌اند. برای مثال، برای تنظیم اولین روز هفته به یکشنبه:

import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.firstweekday()

تنظیم فعلی برای روز هفته‌ای که هر هفته با آن آغاز می‌شود را برمی‌گرداند.

calendar.isleap(year)

اگر year یک سال کبیسه باشد، True را برمی‌گرداند، در غیر این صورت False را برمی‌گرداند.

calendar.leapdays(y1, y2)

تعداد سال‌های کبیسه در بازه‌ای از y1 تا y2 (غیرشامل) را برمی‌گرداند، که در آن y1 و y2 سال هستند.

این تابع برای بازه‌هایی که تغییر قرن را دربرمی‌گیرند، کار می‌کند.

calendar.weekday(year, month, day)

روز هفته (0 دوشنبه است) را برای year (1970--...)، month (1--12day (1--31) برمی‌گرداند.

calendar.weekheader(width)

یک سرآیند شامل نام‌های کوتاه‌شده روزهای هفته برمی‌گرداند. width عرض یک روز هفته را بر حسب تعداد نویسه‌ها مشخص می‌کند.

calendar.monthrange(year, month)

روز هفته‌ی اولین روز ماه و تعداد روزهای ماه را برای year و month مشخص‌شده برمی‌گرداند.

calendar.monthcalendar(year, month)

ماتریسی را برمی‌گرداند که گاه‌شماری یک ماه را نشان می‌دهد. هر ردیف نشان‌دهنده یک هفته است؛ روزهای خارج از ماه با صفر نشان داده می‌شوند. هر هفته با دوشنبه آغاز می‌شود، مگر آنکه توسط setfirstweekday() تنظیم شده باشد.

calendar.prmonth(theyear, themonth, w=0, l=0)

گاه‌شماری یک ماه را همان‌طور که توسط month() برگردانده می‌شود، چاپ می‌کند.

calendar.month(theyear, themonth, w=0, l=0)

گاه‌شماری یک ماه را به‌صورت یک رشته‌ی چندخطی با استفاده از formatmonth() از کلاس TextCalendar برمی‌گرداند.

calendar.prcal(theyear, w=0, l=0, c=6, m=3)

گاه‌شماری یک سال کامل را به‌همان‌صورتی که calendar() برمی‌گرداند، چاپ می‌کند.

calendar.calendar(theyear, w=2, l=1, c=6, m=3)

یک گاه‌شماری سه‌ستونه برای کل سال را به‌عنوان یک رشته چندخطی با استفاده از formatyear() از کلاس TextCalendar برمی‌گرداند.

calendar.timegm(tuple)

تابعی نامرتبط اما کاربردی که یک تاپل زمانی مانند آنچه توسط تابع gmtime() در ماژول time برگردانده می‌شود را دریافت می‌کند و مقدار برچسب زمانی یونیکس متناظر را، با فرض مبدأ زمانی سال ۱۹۷۰ و کدگذاری POSIX، برمی‌گرداند. در واقع، time.gmtime() و timegm() معکوس یکدیگرند.

ماژول calendar ویژگی‌های داده زیر را اکسپورت می‌کند:

calendar.day_name

دنباله‌ای که روزهای هفته را در locale نشان می‌دهد، به‌طوری که دوشنبه روز شماره ۰ است.

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
calendar.day_abbr

دنباله‌ای که روزهای هفته را به‌صورت مخفف در locale فعلی نشان می‌دهد، که در آن Mon روز شماره ۰ است.

>>> import calendar
>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
calendar.MONDAY
calendar.TUESDAY
calendar.WEDNESDAY
calendar.THURSDAY
calendar.FRIDAY
calendar.SATURDAY
calendar.SUNDAY

نام‌های مستعار روزهای هفته، که در آن‌ها MONDAY برابر با 0 و SUNDAY برابر با 6 است.

اضافه شده در نسخه‌ی 3.12.

class calendar.Day

شمارشی که روزهای هفته را به‌عنوان ثابت‌های عدد صحیح تعریف می‌کند. اعضای این شمارش به محدوده ماژول اکسپورت می‌شوند، به‌صورت MONDAY تا SUNDAY.

اضافه شده در نسخه‌ی 3.12.

calendar.month_name

یک دنباله که ماه‌های سال را در locale فعلی نشان می‌دهد. این دنباله از قرارداد معمول پیروی می‌کند که بر اساس آن ژانویه ماه شماره‌ی ۱ است، بنابراین طول آن ۱۳ است و month_name[0] رشته‌ی خالی است.

>>> import calendar
>>> list(calendar.month_name)
['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
calendar.month_abbr

دنباله‌ای که نام‌های مخفف ماه‌های سال را در locale فعلی نشان می‌دهد. این از قرارداد معمول پیروی می‌کند که ژانویه ماه شماره‌ی ۱ است، بنابراین طول آن ۱۳ است و month_abbr[0] رشته‌ی خالی است.

>>> import calendar
>>> list(calendar.month_abbr)
['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
calendar.JANUARY
calendar.FEBRUARY
calendar.MARCH
calendar.APRIL
calendar.MAY
calendar.JUNE
calendar.JULY
calendar.AUGUST
calendar.SEPTEMBER
calendar.OCTOBER
calendar.NOVEMBER
calendar.DECEMBER

نام‌های مستعار برای ماه‌های سال، که در آن‌ها JANUARY برابر 1 و DECEMBER برابر 12 است.

اضافه شده در نسخه‌ی 3.12.

class calendar.Month

شمارشی که ماه‌های سال را به‌عنوان ثابت‌های عدد صحیح تعریف می‌کند. اعضای این شمارش با نام‌های JANUARY تا DECEMBER به محدوده ماژول اکسپورت شده‌اند.

اضافه شده در نسخه‌ی 3.12.

ماژول calendar استثناهای زیر را تعریف می‌کند:

exception calendar.IllegalMonthError(month)

زیرکلاسی از ValueError و IndexError، زمانی پرتاب می‌شود که شماره ماه داده‌شده خارج از بازه‌ی ۱ تا ۱۲ (شامل هر دو) باشد.

تغییر یافته در نسخه‌ی 3.12: IllegalMonthError اکنون نیز یک زیرکلاس از ValueError است. کد جدید باید از گرفتن IndexError خودداری کند.

month

شماره‌ی ماه نامعتبر.

exception calendar.IllegalWeekdayError(weekday)

زیرکلاسی از ValueError که زمانی پرتاب می‌شود که شماره‌ی روز هفته‌ی داده‌شده خارج از بازه‌ی ۰ تا ۶ (شامل هر دو) باشد.

weekday

شماره‌ی نامعتبر روز هفته.

همچنین ملاحظه نمائید

ماژول datetime

رابط شیءگرا برای تاریخ‌ها و زمان‌ها با عملکردی مشابه ماژول time.

ماژول time

توابع سطح پایین مرتبط با زمان.

استفاده از خط فرمان

اضافه شده در نسخه‌ی 2.5.

ماژول calendar را می‌توان به‌عنوان یک اسکریپت از خط فرمان اجرا کرد تا یک گاه‌شماری به‌صورت تعاملی چاپ شود.

python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]
                   [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
                   [-f FIRST_WEEKDAY] [year] [month]

برای مثال، برای چاپ گاه‌شماری سال ۲۰۰۰:

$ python -m calendar 2000
                                  2000

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6             1  2  3  4  5
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       6  7  8  9 10 11 12
10 11 12 13 14 15 16      14 15 16 17 18 19 20      13 14 15 16 17 18 19
17 18 19 20 21 22 23      21 22 23 24 25 26 27      20 21 22 23 24 25 26
24 25 26 27 28 29 30      28 29                     27 28 29 30 31
31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31

گزینه‌های زیر پذیرفته می‌شوند:

--help, -h

پیام راهنما را نمایش می‌دهد و خارج می‌شود.

--locale LOCALE, -L LOCALE

locale مورد استفاده برای نام ماه‌ها و روزهای هفته. پیش‌فرض آن انگلیسی است.

--encoding ENCODING, -e ENCODING

کدگذاری مورد استفاده برای خروجی. اگر --locale تنظیم شده باشد، --encoding الزامی است.

--type {text,html}, -t {text,html}

گاه‌شماری را به‌صورت متن یا به‌عنوان یک سند HTML در پایانه چاپ کنید.

--first-weekday FIRST_WEEKDAY, -f FIRST_WEEKDAY

روز هفته برای شروع هر هفته. باید عددی بین ۰ (دوشنبه) و ۶ (یکشنبه) باشد. پیش‌فرض ۰ است.

اضافه شده در نسخه‌ی 3.13.

year

سالی که گاه‌شماری برای آن چاپ می‌شود. پیش‌فرض آن سال جاری است.

month

ماه از year مشخص‌شده برای چاپ گاه‌شماری. باید عددی بین ۱ تا ۱۲ باشد و فقط می‌تواند در حالت متنی استفاده شود. به‌طور پیش‌فرض، گاه‌شماریی برای تمام سال چاپ می‌شود.

گزینه‌های حالت متنی:

--width WIDTH, -w WIDTH

عرض ستون تاریخ بر حسب ستون‌های پایانه. تاریخ به‌صورت وسط‌چین در ستون چاپ می‌شود. هر مقدار کمتر از ۲ نادیده گرفته می‌شود. مقدار پیش‌فرض ۲ است.

--lines LINES, -l LINES

تعداد سطرهای هر هفته در ردیف‌های پایانه. تاریخ با تراز از بالا چاپ می‌شود. هر مقداری کمتر از ۱ باشد نادیده گرفته می‌شود. مقدار پیش‌فرض ۱ است.

--spacing SPACING, -s SPACING

فاصله‌ی میان ماه‌ها در ستون‌ها. هر مقداری کمتر از ۲ باشد، در نظر گرفته نمی‌شود. مقدار پیش‌فرض آن ۶ است.

--months MONTHS, -m MONTHS

تعداد ماه‌های چاپ‌شده در هر ردیف. مقدار پیش‌فرض ۳ است.

تغییر یافته در نسخه‌ی 3.14: به‌طور پیش‌فرض، تاریخ امروز با رنگ برجسته می‌شود و می‌توان آن را با استفاده از متغیرهای محیطی کنترل کرد.

گزینه‌های حالت HTML:

--css CSS, -c CSS

مسیر شیوه‌نامه CSS برای استفاده در گاه‌شماری. این مسیر باید یا نسبت به HTML تولیدشده نسبی باشد، یا یک URL مطلق HTTP یا file:///.