ਮੌਡਿਊਲ:Date/exampleDocumentation for this module may be created at ਮੌਡਿਊਲ:Date/example/doc -- Examples showing how to use [[Module:Date]]. See the talk page for output.
local Date = require('Module:Date')._Date
local show -- function defined below to display results
-- A date can be constructed using various input formats.
local function make_a_date()
show('Make a date')
local same_dates = {
Date(2016, 3, 9),
Date('2016-03-09'),
Date('2016-3-9'),
Date('9 March 2016'),
Date('09 mar 2016'),
Date('MAR 09 2016'),
Date('March 9, 2016'),
Date('March 9, 2016 CE'),
Date('March 9, 2016 A.D.'),
Date('3:45 pm 9 March 2016'),
Date('3:45 p.m. 9 March 2016'),
Date(2016, 3, 9, 15, 45),
Date('9 March 2016 15:45'),
}
for _, date in ipairs(same_dates) do
show(nil, date:text() .. ' or ' .. date:text('mdy'))
end
local more_dates = {
Date('4 October 1582', 'Julian'),
Date('juliandate', 2299160),
Date('15 October 1582'),
}
for _, date in ipairs(more_dates) do
show(nil, date.dayname .. ' ' .. date:text() .. ' in the ' ..
date.calendar .. ' calendar is Julian day ' .. date.jd)
end
end
-- A date can be displayed using various output formats.
local function show_a_date()
show('Show a date')
local dates = {
Date(2016, 3, 9),
Date('9 March 2016 BC'),
}
local format_option = {
{ 'ymd' },
{ 'mdy' },
{ 'dmy' },
{ 'dmy', 'era=B.C.E.' },
{ '%A %B %-d, %Y %{era}' },
{ '%A %B %-d, %Y %{era}', 'era=A.D.' },
{ 'a %{dayname} in %{monthname} %Y %{era}' },
}
for _, t in ipairs(format_option) do
local format = t[1]
local option = t[2]
for _, date in ipairs(dates) do
show(nil, date:text(format, option))
end
end
end
-- When an input date is parsed, its format is stored.
local function keep_format()
show('Keep format of input date')
local somedate = Date('March 9, 2016')
local dates = {
Date(2016, 3, 9),
Date('2016-3-9'),
Date('9 Mar 2016'),
Date('March 9, 2016'),
Date(somedate, {day = 1}), -- somedate with day changed
somedate + 23, -- 23 days after somedate
somedate - '3 months', -- 3 months before somedate
Date('3:45 p.m. March 9, 2016'),
}
show(nil, 'Format of somedate was ' .. somedate.format)
for _, date in ipairs(dates) do
show(nil, date:text() .. ' or ' .. date:text(date.format))
end
end
-- Using Date to get the current date, or current date and time.
local function current_date()
local now_date = Date('currentdate')
local now_datetime = Date('currentdatetime')
show('Current date showing when this page was last purged',
now_date:text(), -- 7 March 2016 (for example)
now_date:text('mdy'), -- March 7, 2016
now_date:text('ymd'), -- 2016-03-07
now_date:text('%A %-d %B %-Y'), -- Monday 7 March 2016
now_datetime:text(), -- 21:32:45 7 March 2016
now_datetime:text('hms'), -- 21:32:45
now_datetime:text('%c') -- 9:32 pm 7 March 2016
)
end
-- Using current to provide default values.
local function current_as_default(year, month, day, hour, minute, second)
local current = require('Module:Date')._current
year = year or current.year
month = month or current.month
day = day or current.day
hour = hour or current.hour
minute = minute or current.minute
second = second or current.second
show('Using the current date as a default',
year, month, day, hour, minute, second)
-- Alternatively, a date can be constructed with specified items overridden.
show(nil, Date('currentdatetime', {
year = year,
month = month,
day = day,
hour = hour,
minute = minute,
second = second }):text('%c'))
end
-- Make a date from the day number in a year.
local function date_from_day_of_year()
-- Example: day 123 in 2015 and in 2016.
show('Make a date from the day number in a year')
local offset = 123 - 1 -- 1 January has day-of-year = 1
for _, year in ipairs({ 2015, 2016 }) do
local date = Date(year, 1, 1) + offset
show(nil, 'Day ' .. date.dayofyear .. ' in ' .. year .. ' is ' .. date:text())
end
end
-- Number of days in a month for Gregorian (default) and Julian calendars.
local function days_in_month(year, month, calendar_name)
local title = 'Days in month'
if calendar_name then
title = title .. ' (' .. calendar_name .. ' calendar)'
end
local monthdays = require('Module:Date')._days_in_month
show(title, monthdays(year, month, calendar_name))
-- Alternative method, using Date.
local date = Date(year, month, 1, calendar_name)
show(nil, date.monthname .. ' ' .. date.year .. ' had ' .. date.monthdays .. ' days')
show(nil, date:text('%{monthname} %{year} had %{monthdays} days')) -- same
end
-- Julian day number and date arithmetic.
local function julian_date(year, month, count, calendar_name)
if calendar_name then
show('Julian date (' .. calendar_name .. ')')
else
show('Julian date (Gregorian)') -- Gregorian calendar by default
local date = Date('24 November 4714 BCE')
show(nil, 'Julian day number was ' .. date.jd .. ' on ' .. date:text('mdy'))
end
local first_of_month = Date(year, month, 1, calendar_name)
for _ = 1, count do
first_of_month = first_of_month + '1m' -- next month
local date = first_of_month - '1d' -- last day of month
show(nil,
'Last day in month (' .. date:text() .. ' ' .. date.calendar ..
' calendar) had Julian day number ' .. date.jd
)
end
end
-- Number of days a date was in the past, or will be in the future.
local function how_long(date_text)
local now_date = Date('currentdate')
local then_date = Date(date_text)
if not then_date then
show('How long', 'Invalid date: ' .. (date_text or ''))
return
end
local fmt = '%A %B %-d, %-Y %{era} (day of year = %{dayofyear}, serial day = %{gsd}) '
local info = then_date:text(fmt)
if then_date == now_date then
fmt = 'is now (%d day%s)'
elseif then_date > now_date then
fmt = 'will be in %d day%s'
else
fmt = 'was %d day%s ago'
end
local diff = then_date - now_date
local days = diff.age_days
local s = days == 1 and '' or 's'
show('How long', info .. string.format(fmt, days, s))
local y, m, d = diff:age('ymd') -- age in years, months, days
show(nil, string.format('(%d years + %d months + %d days)', y, m, d))
end
-- First and third Fridays in each month of the given year.
local function fridays(year)
show('First and third Fridays in each month of ' .. year)
for month = 1, 12 do
local dates = Date(year, month, 1):list('Friday >=')
show(nil, dates[1] .. ', ' .. dates[3])
end
end
-- Next Friday after or before a particular date.
local function next_friday()
show('Next Friday and last Friday for certain dates')
local dates = {
Date('1 Jan 2016'),
Date('2 Jan 2016'),
Date('3 Mar 1980'),
}
for _, date in ipairs(dates) do
-- 1 = number of Fridays that are wanted in the list
local after = date:list('1 Friday')[1]
local before = date:list('1 Friday <')[1]
local format = '%A %-d %B %-Y'
show(nil,
'For ' .. date:text(format) ..
', the next is ' .. after:text(format) ..
', and the last is ' .. before:text(format)
)
end
end
-- Results are held in the lines table.
local lines
function show(title, ...) -- for forward declaration above
if title then
if lines[1] then
table.insert(lines, '')
end
table.insert(lines, "'''" .. title .. "'''")
end
for _, text in ipairs({...}) do
table.insert(lines, ':' .. tostring(text))
end
end
local function main()
lines = {}
make_a_date()
show_a_date()
keep_format()
current_date()
current_as_default(nil, nil, nil, 14, 30, 0) -- 2:30 pm today
date_from_day_of_year()
days_in_month(1900, 2)
days_in_month(1900, 2, 'Julian')
julian_date(1899, 11, 4)
julian_date(-120, 11, 4, 'Julian')
how_long('29 Feb 2100') -- an invalid date
how_long('currentdate')
how_long('29 Feb 2400')
how_long('29 Feb 2401 BCE')
fridays(2016)
next_friday()
return table.concat(lines, '\n')
end
return { main = main }
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia