Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Date/example
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- 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 }
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Date/example/doc
(
edit
)