calendar --- General calendar-related functions¶
Kode Sumber: Lib/calendar.py
Modul ini mengijinkan saudara untuk mendapatkan keluaran kalender-kalender seperti halnya di program Unix cal, dan menyediakan fungsi-fungsi tambahan yang berguna yang terkait dengan kalender. Secara bawaan, kalender-kalender ini telah ditentukan dimulai dari hari Senin sebagai hari pertama dalam seminggu, dan Sabtu sebagai hari terakhir (merupakan sistem yang dianut oleh Eropa). Gunakan setfirstweekday() untuk mengatur hari pertama dalam seminggu ke hari Sabtu (6) atau ke nama hari yang lain. Parameter-parameter yang menentukan tanggal-tanggal diberikan dalam bentuk bilangan bulat. Untuk fungsionalitas yang lain, lihat juga modul-modul datetime dan time.
Fungsi-fungsi dan kelas-kelas yang didefinisikan di modul ini menggunakan kalender yang telah diidealkan, yaitu kalender Gregorian yang digunakan saat ini yang rentang waktunya tak terbatas ke arah masa depan dan masa lalu. Hal ini bersesuaian dengan definisi dari kalender "proleptic Gregorian" di buku "Calendrical Calculation" oleh Dershowitz dan Reingold, yang merupakan kalender dasar bagi semua ragam komputasi. Tahun-tahun nol dan negatif diinterpretasikan sesuai dengan standar ISO 8601. Tahun 0 adalah 1 SM, tahun -1 adalah 2 SM, demikian seterusnya,
- class calendar.Calendar(firstweekday=0)¶
Creates a
Calendarobject. firstweekday is an integer specifying the first day of the week.MONDAYis0(the default),SUNDAYis6.Suatu object
Calendarmenyediakan beberapa metode yang dapat digunakan untuk mempersiapkan data kalender yang akan digunakan untuk proses pemformatan setelahnya. Kelas ini tidak dapat melakukan penformatan dengan sendirinya. Proses penformatan merupakan tugas dari subkelas-subkelas di dalam kelas tersebut.Calendarinstances have the following methods and attributes:- firstweekday¶
The first weekday as an integer (0--6).
This property can also be set and read using
setfirstweekday()andgetfirstweekday()respectively.
- getfirstweekday()¶
Return an
intfor the current first weekday (0--6).Identical to reading the
firstweekdayproperty.
- setfirstweekday(firstweekday)¶
Set the first weekday to firstweekday, passed as an
int(0--6)Identical to setting the
firstweekdayproperty.
- iterweekdays()¶
Return an iterator for the week day numbers that will be used for one week. The first value from the iterator will be the same as the value of the
firstweekdayproperty.
- itermonthdates(year, month)¶
Memberikan keluaran suatu iterator untuk bulan month (1--12) dalam suatu tahun year. Iterator ini akan memberikan keluaran semua hari (berupa objek
datetime.date) dalam sebulan dan semua hari sebelum dimulainya bulan tersebut dan sesudah berakhir bulan tersebut yang diperlukan untuk melengkapi 7 hari lengkap dalam sepekan.
- itermonthdays(year, month)¶
Memberikan keluaran suatu iterator untuk bulan month dalam suatu tahun year serupa dengan
itermonthdates(), tetapi tidak dibatasi oleh rentangdatetime.date. Hari-hari yang diberikan berupa nomor-nomor tanggal dalam sebulan. Untuk hari-hari diluar bulan yang ditentukan, nomor hari adalah0.
- itermonthdays2(year, month)¶
Memberikan keluaran suatu iterator untuk bulan month dalam suatu tahun year serupa dengan
itermonthdates(), tetapi tidak dibatasi oleh rentangdatetime.date. Hari-hari yang diberikan berupa tuples yang memuat nomor hari dalam sebulan dan nomor hari dalam seminggu.
- itermonthdays3(year, month)¶
Memberikan keluaran suatu iterator untuk bulan month dalam suatu tahun year serupa dengan
itermonthdates(), tetapi tidak dibatasi oleh rentangdatetime.date. Hari-hari yang diberikan berupa tuples yang memuat nomor tahun, bulan, dan hari.Added in version 3.7.
- itermonthdays4(year, month)¶
Memberikan keluaran suatu iterator untuk bulan month dalam suatu tahun year serupa dengan
itermonthdates(), tetapi tidak dibatasi oleh rentangdatetime.date. Hari-hari yang diberikan berupa tuples yang terdiri dari nomort tahun, bulan, hari, dan hari dalam sepekan.Added in version 3.7.
- monthdatescalendar(year, month)¶
Memberikan keluaran berupa suatu list pekan-pekan dalam suatu bulan month di suatu tahun year sebagai hari-hari lengkap dalam sepekan. Pekan-pekan adalah lists tujuh objek-object
datetime.date.
- monthdays2calendar(year, month)¶
Memberikan keluaran berupa suatu list pekan-pekan dalam satu bulan month di suatu tahun year sebagai hari lengkap dalam sepekan. Pekan-pekan adalah lists tujuh tuples tanggal dan nomor hari dalam sepekan.
- monthdayscalendar(year, month)¶
Memberikan keluaran berupa suatu list pekan-pekan dalam satu bulan month di suatu tahun year sebagai hari lengkap dalam sepekan. Pekan-pekan adalah lists tujuh nomor tanggal.
- yeardatescalendar(year, width=3)¶
Memberikan keluaran data berdasarkan tahun yang telah ditentukan yang dapat digunakan sebagai input dalam proses penformatan. Nilai keluaran tersebut adalah suatu list bulan tersusun dalam baris-baris. Setiap baris memuat banyaknya width bulan (dipasang secara default di 3). Setiap bulan memuat antara 4 sampai 6 pekan dan setiap pekan memuat 1--7 hari. Hari-hari merupakan objek
datetime.date.
- yeardays2calendar(year, width=3)¶
Memberikan keluaran data yang berdasarkan tahun yang telah ditentukan yang dapat digunakan sebagai input dalam proses penformatan (serupa dengan
yeardatescalendar()). Keluaran yang diberikan di dalam lists pekan berupa tuples yang memuat nomor-nomor hari dan nomor-nomor hari dalam sepekan. Nomor-nomor hari diluar bulan yang ditentukan dipasang pada nilai nol.
- yeardayscalendar(year, width=3)¶
Memberikan keluaran data yang berdasarkan tahun yang telah ditentukan yang dapat digunakan sebagai input dalam proses penformatan (serupa dengan
yeardatescalendar()). Keluaran yang diberikan di dalam lists pekan berupa nomor hari. Nomor hari diluar bulan yang ditentukan dipasang pada nilai nol.
- class calendar.TextCalendar(firstweekday=0)¶
Kelas ini digunakan untuk menbangkitkan kalender-kalender berformat teks biasa / berkas ASCII.
Instanse-instanse
TextCalendarmemiliki metode-metode berikut:- formatday(theday, weekday, width)¶
Return a string representing a single day formatted with the given width. If theday is
0, return a string of spaces of the specified width, representing an empty day. The weekday parameter is unused.
- formatweek(theweek, w=0)¶
Return a single week in a string with no newline. If w is provided, it specifies the width of the date columns, which are centered. Depends on the first weekday as specified in the constructor or set by the
setfirstweekday()method.
- formatweekday(weekday, width)¶
Return a string representing the name of a single weekday formatted to the specified width. The weekday parameter is an integer representing the day of the week, where
0is Monday and6is Sunday.
- formatweekheader(width)¶
Return a string containing the header row of weekday names, formatted with the given width for each column. The names depend on the locale settings and are padded to the specified width.
- formatmonth(theyear, themonth, w=0, l=0)¶
Memberikan keluaran suatu kalender bulan dalam bentuk suatu string multi-baris. Jika nilai w diberikan, nilai ini akan menentukan lebar dari lajur-lajur tanggal, yang mana string akan disejajarkan rata tengah. Jika nilai l diberikan, nilai ini akan menentukan banyaknya baris yang digunakan untuk tiap pekan. Metode ini bergantung pada penentuan hari pertama dalam sepekan sebagaimana yang telah dipilih dalam constructor atau yang telah diatur dengan metode
setfirstweekday().
- formatmonthname(theyear, themonth, width=0, withyear=True)¶
Return a string representing the month's name centered within the specified width. If withyear is
True, include the year in the output. The theyear and themonth parameters specify the year and month for the name to be formatted respectively.
- prmonth(theyear, themonth, w=0, l=0)¶
Mencetak suatu kalender bulan sebagaimana yang diberikan oleh
formatmonth().
- formatyear(theyear, w=2, l=1, c=6, m=3)¶
Memberikan keluaran suatu m-lajur kalender setahun dalam bentuk string multi-baris. Parameter-parameter opsional w, l, dan c adalah lebar lajur tanggal, banyaknya baris tiap minggu, dan banyaknya spasi antara lajur-lajur bulan, berturut-turut. Metode ini bergantung pada penentuan hari pertama dalam sepekan sebagaimana yang telah dipilih dalam constructor atau yang telah diatur dengan metode
setfirstweekday(). Tahun-tahun awal yang mana suatu kalender dapat dibangkitkan bergantung pada platform yang digunakan.
- pryear(theyear, w=2, l=1, c=6, m=3)¶
Mencetak kalender untuk satu tahun penuh sebagaimana yang diberikan oleh
formatyear().
- class calendar.HTMLCalendar(firstweekday=0)¶
Kelas ini dapat digunakan untuk membangkitkan kalender-kalender berformat HTML.
Instanse-instanse
HTMLCalendarmemliki metode-metode berikut:- formatmonth(theyear, themonth, withyear=True)¶
Memberikan keluaran suatu kalender bulan dalam bentuk suatu tabel HTML. Jika nilai withyear adalah logika benar, tahun akan ditampilkan di bagian tajuk. Demikian sebaliknya hanya nama bulan yang ditampilkan.
- formatyear(theyear, width=3)¶
Memberikan keluaran suatu kalender tahunan dalam bentuk suatu tabel HTML. Argumen width (nilai bawaan adalah 3) menentukan banyaknya bulan tiap baris.
- formatyearpage(theyear, width=3, css='calendar.css', encoding=None)¶
Memberikan keluaran suatu kalender tahunan dalam bentuk suatu halaman HTML lengkap. width (nilai bawaan adalah 3) menentukan banyaknya bulan tiap baris. css adalah nama untuk cascading style sheet yang digunakan.
Nonedapat diberikan pada argumen css jika tidak ada style sheet yang digunakan. encoding menentukan pengodean yang digunakan untuk keluaran (nilai bawaan pada sistem adalah nilai bawaan pengodean ini).
- formatmonthname(theyear, themonth, withyear=True)¶
Return a month name as an HTML table row. If withyear is true the year will be included in the row, otherwise just the month name will be used.
HTMLCalendarmemliki atribut-atribut berikut yang dapat ditimpa atribut baru dengan tujuan untuk mengubahsuaikan kelas-kelas CSS yang di gunakan di kelas kalendar:- cssclasses¶
Suatu list kelas-kelas CSS yang digunakan untuk tiap hari-hari dalam sepekan. List kelas bawaan berupa:
cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
Beberapa corak-corak dapat ditambahkan untuk penformatan tampilan tiap hari:
cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]
Perlu diperhatikan bahwa panjang dari list ini haruslah tujuh item.
- cssclass_noday¶
Kelas CSS untuk hari-hari dalam sepekan yang muncul sebelum dan sesudah bulan yang dipilih.
Added in version 3.7.
- cssclasses_weekday_head¶
Suatu list kelas-kelas CSS yang digunakan untuk hari-hari dalam sepekan di baris tajuk. Nilai bawaan untuk atribut ini adalah sama dengan atribut
cssclasses.Added in version 3.7.
- cssclass_month_head¶
Kelas CSS untuk bagian atas penamaan bulan (digunakan oleh metode
formatmonthname()). Nilai bawaan untuk atribut ini adalah"month".Added in version 3.7.
- cssclass_month¶
Kelas CSS untuk seluruh tabel bulan (digunakan oleh metode
formatmonth()). Nilai bawaan untuk atribut ini adalah"month".Added in version 3.7.
- cssclass_year¶
Kelas CSS untuk seluruh tabel-tabel bulan dalam setahun (digunakan oleh metode
formatyear()). Nilai bawaan untuk atribut ini adalah"year".Added in version 3.7.
- cssclass_year_head¶
Kelas CSS kepala tabel untuk seluruh bulan dalam setahun (digunakan oleh
formatyear()). Nilai bawaan untuk atribut ini adalah"year".Added in version 3.7.
Perlu diperhatikan meskipun penamaan atribut-atribut kelas yang dijelaskan di atas bersifat tunggal (sebagai contoh
cssclass_monthcssclass_noday), pengguna dapat mengganti kelas CSS tunggal dengan suatu list kelas-kelas CSS yang saling terpisah oleh spasi, sebagai contoh:"text-bold text-red"Berikut ini adalah suatu contoh bagaimana
HTMLCalendardapat diubahsuaikan: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)¶
This subclass of
TextCalendarcan be passed a locale name in the constructor and will return month and weekday names in the specified locale.
- class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)¶
This subclass of
HTMLCalendarcan be passed a locale name in the constructor and will return month and weekday names in the specified locale.
Catatan
The constructor, formatweekday() and formatmonthname() methods
of these two classes temporarily change the LC_TIME locale to the given
locale. Because the current locale is a process-wide setting, they are
not thread-safe.
Untuk kalender-kalender dengan teks sederhana, modul ini menyediakan fungsi-fungsi berikut.
- calendar.setfirstweekday(weekday)¶
Menetapkan hari dimulainya hitungan minggu (
0adalah Senin,6adalah Minggu). Nilai-nilaiMONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY, danSUNDAYdisediakan secara bawaan demi kenyamanan. Sebagai contoh, untuk mengatur hari dimulainya hitungan minggu di hari Minggu:import calendar calendar.setfirstweekday(calendar.SUNDAY)
- calendar.firstweekday()¶
Memberikan keluaran-keluaran pengaturan saat ini untuk hari dimulainya hitungan sepekan.
- calendar.isleap(year)¶
Memberikan keluaran-keluaran
Truejika year adalah suatu tahun kabisat, sebaliknyaFalse.
- calendar.leapdays(y1, y2)¶
Memberikan keluaran banyaknya tahun-tahun kabisat dalam rentang dari y1 sampai y2 (ekslusif, batas rentang tidak ikut diperhitungkan), dengan y1 dan y2 adalah angka tahun.
Fungsi ini berlaku untuk rentang tahun sampai satu abad.
- calendar.weekday(year, month, day)¶
Memberikan keluaran hari dalam sepekan (
0adalah Senin) untuk year (1970--...), month (1--12), day (1--31).
- calendar.weekheader(n)¶
Memberikan keluaran suatu tajuk yang memuat singkatan nama-nama hari dalam sepekan. n mengatur lebar dari karakter-karakter tiap nama-nama hari dalam sepekan.
- calendar.monthrange(year, month)¶
Memberikan keluaran-keluaran hari dari tanggal pertama di bulan yang dipilih dan banyaknya hari dalam bulan tersebut, dengan year dan month sebagai argumen yand diisi oleh pengguna.
- calendar.monthcalendar(year, month)¶
Memberikan keluaran-keluaran suatu matriks yang mewakili suatu kalendar bulan. Tiap baris mewakili suatu pekan; hari-hari diluar bulan yang dipilih dinyatakan oleh nol. Tiap pekan dimulai dengan Senin kecuali
setfirstweekday()telah diatur untuk dimulai dengan hari yang lain.
- calendar.prmonth(theyear, themonth, w=0, l=0)¶
Mencetak suatu kalender bulan sebagaimana yang diberikan oleh
month().
- calendar.month(theyear, themonth, w=0, l=0)¶
Returns a month's calendar in a multi-line string using the
formatmonth()of theTextCalendarclass.
- calendar.prcal(year, w=0, l=0, c=6, m=3)¶
Mencetak kalender untuk satu tahun penuh sebagaimana yang diberikan oleh fungsi
calendar().
- calendar.calendar(year, w=2, l=1, c=6, m=3)¶
Returns a 3-column calendar for an entire year as a multi-line string using the
formatyear()of theTextCalendarclass.
- calendar.timegm(tuple)¶
Fungsi yang tak terkait dengan fungsi lain tapi berguna yang menggunakan masukan suatu tuple waktu seperti yang diberikan oleh keluaran fungsi
gmtime()dalam modultime, dan memberikan keluaran yang bersesuaian dengan nilai cap waktu Unix, dengan mengasumsikan zaman dimulai dari tahun 1970, dan penyandian POSIX. Secara fakta, fungsitime.gmtime()dantimegm()adalah saling invers satu sama lain.
Module calendar mengekspor data atribut-atribut berikut:
- calendar.day_name¶
A sequence that represents the days of the week in the current locale, where Monday is day number 0.
>>> import calendar >>> list(calendar.day_name) ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
- calendar.day_abbr¶
A sequence that represents the abbreviated days of the week in the current locale, where Mon is day number 0.
>>> 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¶
Aliases for the days of the week, where
MONDAYis0andSUNDAYis6.Added in version 3.12.
- class calendar.Day¶
Enumeration defining days of the week as integer constants. The members of this enumeration are exported to the module scope as
MONDAYthroughSUNDAY.Added in version 3.12.
- calendar.month_name¶
A sequence that represents the months of the year in the current locale. This follows normal convention of January being month number 1, so it has a length of 13 and
month_name[0]is the empty string.>>> import calendar >>> list(calendar.month_name) ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
- calendar.month_abbr¶
A sequence that represents the abbreviated months of the year in the current locale. This follows normal convention of January being month number 1, so it has a length of 13 and
month_abbr[0]is the empty string.>>> 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¶
Aliases for the months of the year, where
JANUARYis1andDECEMBERis12.Added in version 3.12.
- class calendar.Month¶
Enumeration defining months of the year as integer constants. The members of this enumeration are exported to the module scope as
JANUARYthroughDECEMBER.Added in version 3.12.
The calendar module defines the following exceptions:
- exception calendar.IllegalMonthError(month)¶
A subclass of
ValueError, raised when the given month number is outside of the range 1-12 (inclusive).- month¶
The invalid month number.
- exception calendar.IllegalWeekdayError(weekday)¶
A subclass of
ValueError, raised when the given weekday number is outside of the range 0-6 (inclusive).- weekday¶
The invalid weekday number.
Lihat juga
Command-Line Usage¶
Added in version 2.5.
The calendar module can be executed as a script from the command line
to interactively print a calendar.
python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]
[-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
[year] [month]
For example, to print a calendar for the year 2000:
$ 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
The following options are accepted:
- --help, -h¶
Show the help message and exit.
- --locale LOCALE, -L LOCALE¶
The locale to use for month and weekday names. Defaults to English.
- --encoding ENCODING, -e ENCODING¶
The encoding to use for output.
--encodingis required if--localeis set.
- --type {text,html}, -t {text,html}¶
Print the calendar to the terminal as text, or as an HTML document.
- year¶
The year to print the calendar for. Must be a number between 1 and 9999. Defaults to the current year.
- month¶
The month of the specified
yearto print the calendar for. Must be a number between 1 and 12, and may only be used in text mode. Defaults to printing a calendar for the full year.
Text-mode options:
- --width WIDTH, -w WIDTH¶
The width of the date column in terminal columns. The date is printed centred in the column. Any value lower than 2 is ignored. Defaults to 2.
- --lines LINES, -l LINES¶
The number of lines for each week in terminal rows. The date is printed top-aligned. Any value lower than 1 is ignored. Defaults to 1.
- --spacing SPACING, -s SPACING¶
The space between months in columns. Any value lower than 2 is ignored. Defaults to 6.
- --months MONTHS, -m MONTHS¶
The number of months printed per row. Defaults to 3.
HTML-mode options:
- --css CSS, -c CSS¶
The path of a CSS stylesheet to use for the calendar. This must either be relative to the generated HTML, or an absolute HTTP or
file:///URL.