Implementează {{Dată}}.


local DateUtils = require('Modul:DateUtils')
local GregorianDate = require('Modul:GregorianDate')
local julianCutoffDate = require('Modul:GregorianDate/data').julianDateOfGregorianStart
local getArgs = require('Modul:Arguments').getArgs
local months = mw.loadData('Modul:DateUtils/data').months
local p = {}

p.formatDateFromFrame = function(frame)
	local args = getArgs(frame)
	local dateObj = {}
	local dateFormat = args['format'] or args['date_format'] or args['dateFormat'] or args['format_dată']
	local julianFormat = args['julian_format'] or args['julianFormat'] or args['format_iulian']
	if args[1] then
		dateObj = DateUtils.parseDate(args[1])
	else
		return ""
	end
	if args[2] then
		dateObj.month = tonumber(months[args[2]] or args[2])
		if args[3] then dateObj.day = tonumber(args[3]) end
	end
	dateObj.calendar = args.calendar or DateUtils.compare(dateObj, julianCutoffDate) < 0 and 'julian' or 'gregorian'
	if not dateObj.precision then
		dateObj.precision = 9
	end
	
	local link = args['link']
	if args['link'] == 'yes' or args['link'] == 'y' then
		link = 'both'
	end
	
	if args[2] ~= nil then
		dateObj.precision = 10
		if args[3] ~= nil then
			dateObj.precision = 11
		end
	end
	return GregorianDate.displayDualDateIfInInterval(dateObj, link, dateFormat, julianFormat)
end

return p