Lompat ke isi

Modul:Date/doc

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Modul ini menyediakan fungsi penanggalan untuk digunakan pada modul lainnya. Tanggal dalam kalender Gregorian dan kalender Julian didukung, dari 9999 SM hingga 9999 M. Kalender-kalender tersebut bersifat proleptik—diasumsikan berlaku sepanjang waktu tanpa penyimpangan.

Sebuah penanggalan dengan waktu yang opsional, dapat ditentukan dalam berbagai format, dan dapat dikonversi untuk ditampilkan menggunakan berbagai format, misalnya, 1 April 2016 atau 1 April 2016. Properti tanggal meliputi tanggal Julian dan tanggal serial Gregorian, serta hari dalam seminggu dan hari dalam setahun.

Tanggal dapat dibandingkan (misalnya, date1 <= date2), dan dapat digunakan dengan penambahan atau pengurangan (misalnya, date + '3 bulan'). Selisih antara dua tanggal dapat ditentukan dengan date1 - date2. Operasi ini berfungsi dengan tanggal kalender Gregorian dan Julian, tetapi date1 - date2 bernilai nil jika kedua tanggal tersebut menggunakan kalender yang berbeda.

Modul ini menyediakan item-item berikut.

EksporDeskrispi
_currentTabel dengan tahun, bulan, tanggal, jam, menit, dan detik saat ini.
_DateFungsi yang mengembalikan tabel untuk tanggal tertentu.
_days_in_monthFungsi yang mengembalikan jumlah hari dalam sebulan.

Berikut ini adalah contoh penggunaan modul tersebut:

Format keluaran

[sunting sumber]

A date can be formatted as text.

local Date = require('Module:Date')._Date
local text = Date(2016, 7, 1):text()          -- result is '1 July 2016'
local text = Date(2016, 7, 1):text('%-d %B')  -- result is '1 July'
local text = Date('1 July 2016'):text('mdy')  -- result is 'July 1, 2016'

The following simplified formatting codes are available.

CodeResult
hmhour:minute, with "am" or "pm" or variant, if specified (14:30 or 2:30 pm or variant)
hmshour:minute:second (14:30:45)
ymdyear-month-day (2016-07-01)
mdymonth day, year (July 1, 2016)
dmyday month year (1 July 2016)

The following formatting codes (similar to strftime) are available.

CodeResult
%aDay abbreviation: Mon, Tue, ...
%ADay name: Monday, Tuesday, ...
%uDay of week: 1 to 7 (Monday to Sunday)
%wDay of week: 0 to 6 (Sunday to Saturday)
%dDay of month zero-padded: 01 to 31
%bMonth abbreviation: Jan to Dec
%BMonth name: January to December
%mMonth zero-padded: 01 to 12
%YYear zero-padded: 0012, 0120, 1200
%HHour 24-hour clock zero-padded: 00 to 23
%IHour 12-hour clock zero-padded: 01 to 12
%pAM or PM or as in options
%MMinute zero-padded: 00 to 59
%SSecond zero-padded: 00 to 59
%jDay of year zero-padded: 001 to 366
%-dDay of month: 1 to 31
%-mMonth: 1 to 12
%-YYear: 12, 120, 1200
%-HHour: 0 to 23
%-MMinute: 0 to 59
%-SSecond: 0 to 59
%-jDay of year: 1 to 366
%-IHour: 1 to 12
%%%

In addition, %{property} (where property is any property of a date) can be used.

For example, Date('1 Feb 2015 14:30:45 A.D.') has the following properties.

CodeResult
%{calendar}Gregorian
%{year}2015
%{month}2
%{day}1
%{hour}14
%{minute}30
%{second}45
%{dayabbr}Sun
%{dayname}Sunday
%{dayofweek}0
%{dow}0 (same as dayofweek)
%{dayofweekiso}7
%{dowiso}7 (same as dayofweekiso)
%{dayofyear}32
%{era}A.D.
%{gsd}735630 (numbers of days from 1 January 1 CE; the first is day 1)
%{juliandate}2457055.1046875 (Julian day)
%{jd}2457055.1046875 (same as juliandate)
%{isleapyear}false
%{monthdays}28
%{monthabbr}Feb
%{monthname}February

Some shortcuts are available. Given date = Date('1 Feb 2015 14:30'), the following results would occur.

CodeDescriptionExample resultEquivalent format
date:text('%c')date and time2:30 pm 1 February 2015%-I:%M %p %-d %B %-Y %{era}
date:text('%x')date1 February 2015%-d %B %-Y %{era}
date:text('%X')time2:30 pm%-I:%M %p

Julian date

[sunting sumber]

The following has an example of converting a Julian date to a date, then obtaining information about the date.

-- Code                                                -- Result
Date = require('Module:Date')._Date
date = Date('juliandate', 320)
number = date.gsd                                      -- -1721105
number = date.jd                                       -- 320
text = date.dayname                                    -- Saturday
text = date:text()                                     -- 9 October 4713&nbsp;BC
text = date:text('%Y-%m-%d')                           -- 4713-10-09
text = date:text('%{era} %Y-%m-%d')                    -- BC 4713-10-09
text = date:text('%Y-%m-%d %{era}')                    -- 4713-10-09&nbsp;BC
text = date:text('%Y-%m-%d %{era}', 'era=B.C.E.')      -- 4713-10-09&nbsp;B.C.E.
text = date:text('%Y-%m-%d', 'era=BCNEGATIVE')         -- -4712-10-09
text = date:text('%Y-%m-%d', 'era=BCMINUS')            -- −4712-10-09 (uses Unicode MINUS SIGN U+2212)
text = Date('juliandate',320):text('%{gsd} %{jd}')     -- -1721105 320
text = Date('Oct 9, 4713 B.C.E.'):text('%{gsd} %{jd}') -- -1721105 320
text = Date(-4712,10,9):text('%{gsd} %{jd}')           -- -1721105 320

Date differences

[sunting sumber]

The difference between two dates can be determined with date1 - date2. The result is valid if both dates use the Gregorian calendar or if both dates use the Julian calendar, otherwise the result is nil. An age and duration can be calculated from a date difference.

For example:

-- Code                                      -- Result
Date = require('Module:Date')._Date
date1 = Date('21 Mar 2015')
date2 = Date('4 Dec 1999')
diff = date1 - date2
d = diff.age_days                            -- 5586
y, m, d = diff.years, diff.months, diff.days -- 15, 3, 17 (15 years + 3 months + 17 days)
y, m, d = diff:age('ymd')                    -- 15, 3, 17
y, m, w, d = diff:age('ymwd')                -- 15, 3, 2, 3 (15 years + 3 months + 2 weeks + 3 days)
y, m, w, d = diff:duration('ymwd')           -- 15, 3, 2, 4
d = diff:duration('d')                       -- 5587 (a duration includes the final day)

A date difference holds the original dates except they are swapped so diff.date1 >= diff.date2 (diff.date1 is the more recent date). This is shown in the following.

date1 = Date('21 Mar 2015')
date2 = Date('4 Dec 1999')
diff = date1 - date2
neg = diff.isnegative                        -- false
text = diff.date1:text()                     -- 21 March 2015
text = diff.date2:text()                     -- 4 December 1999
diff = date2 - date1
neg = diff.isnegative                        -- true (dates have been swapped)
text = diff.date1:text()                     -- 21 March 2015
text = diff.date2:text()                     -- 4 December 1999

A date difference also holds a time difference:

date1 = Date('8 Mar 2016 0:30:45')
date2 = Date('19 Jan 2014 22:55')
diff = date1 - date2
y, m, d = diff.years, diff.months, diff.days      -- 2, 1, 17
H, M, S = diff.hours, diff.minutes, diff.seconds  -- 1, 35, 45

A date difference can be added to a date, or subtracted from a date.

date1 = Date('8 Mar 2016 0:30:45')
date2 = Date('19 Jan 2014 22:55')
diff = date1 - date2
date3 = date2 + diff
date4 = date1 - diff
text = date3:text('ymd hms')        -- 2016-03-08 00:30:45
text = date4:text('ymd hms')        -- 2014-01-19 22:55:00
equal = (date1 == date3)            -- true
equal = (date2 == date4)            -- true

The age and duration methods of a date difference accept a code that identifies the components that should be returned. An extra day is included for the duration method because it includes the final day.

CodeReturned values
'ymwd'years, months, weeks, days
'ymd'years, months, days
'ym'years, months
'y'years
'm'months
'wd'weeks, days
'w'weeks
'd'days