Mô đun:Date period
Giao diện
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
local Date = require('Mô đun:Date')._Date
local yesno = require('Mô đun:Yesno')
local p = {}
function p.main(frame)
return p._main(frame.args[1], frame.args[2], frame.args['force-year'])
end
function p._main(_dateA, _dateB, showYear)
if _dateA == nil and _dateB == nil then
error('Ngày A hoặc B không được cung cấp.')
elseif _dateA == nil then
return Date(_dateA):text('%B %-d')
elseif _dateB == nil then
return Date(_dateB):text('%B %-d')
end
local dateA = Date(_dateA)
local dateB = Date(_dateB)
if dateA == nil and dateB == nil then
error("Ngày A, ngày B hoặc cả hai ngày đều phải hợp lệ.")
end
-- Handles nil dateA or dateB, but not nil both.
local showYear = (yesno(showYear)) or (dateA or dateB).year ~= (dateB or dateA).year
-- Handle cases where one of the dates is not a valid date.
if dateA == nil and dateB ~= nil then
return _dateA .. ' – ' .. dateB:text('%B %-d') .. (showYear and (', ' .. dateB.year) or '')
elseif dateB == nil and dateA ~= nil then
return dateA:text('%B %-d') .. (showYear and (', ' .. dateA.year) or '') .. ' – ' .. _dateB
end
if dateA.year == dateB.year then
if dateA.month == dateB.month and dateA.day == dateB.day then
return dateA:text('%B %-d')
elseif dateA.month == dateB.month then
return dateA:text('%B %-d') .. ' – ' .. dateB.day .. (showYear and (', ' .. dateA.year) or '')
else
return dateA:text('%B %-d') .. ' – ' .. dateB:text('%B %-d') .. (showYear and (', ' .. dateA.year) or '')
end
else
return dateA:text('%B %-d, %-Y') .. ' – ' .. dateB:text('%B %-d, %-Y')
end
end
return p