Sari la conținut

Modul:GregorianDate

De la Wikipedia, enciclopedia liberă

Modul folosit pentru convertirea unei date din calendarul iulian în data corespunzătoare din calendarul gregorian.


localp={}

localDateUtils=require('Modul:DateUtils')
localgetArgs=require('Modul:Arguments').getArgs
localdata=mw.loadData('Modul:GregorianDate/data')

localcompareDates=function(date1,date2)
ifdate1.year<date2.yearthenreturn1end
ifdate2.year<date1.yearthenreturn-1end

ifdate1.month<date2.monththenreturn1end
ifdate2.month<date1.monththenreturn-1end

ifdate1.day<date2.daythenreturn1end
ifdate2.day<date1.daythenreturn-1end

return0
end

localinitialOffset=-3
locallimitDates=data.limitDates
localjulianDateOfGregorianStart=data.julianDateOfGregorianStart

p.julianToGregorian=function(indate)
ifindate.calendarmodel~='http:// wikidata.org/entity/Q1985786'andindate.calendarmodel~='http:// wikidata.org/entity/Q11184'
andindate.calendar~='julian'then
returnindate
end
localoffset=initialOffset
locallimitDateIdx=1
whilelimitDateIdx<data.limitDatesSizeandcompareDates(limitDates[limitDateIdx],indate)>=0do
limitDateIdx=limitDateIdx+1
offset=offset+1
end

localoutputDate=DateUtils.addDaysToDate(indate,offset)
outputDate.calendar='gregorian'
outputDate.calendarmodel='http:// wikidata.org/entity/Q1985727'

returnoutputDate
end

localfunctionextractDateFromFrame(frame)
localoutdate={}
localframeargs=getArgs(frame)
outdate.year=tonumber(frameargs[1]orframeargs['year']or1)
outdate.month=tonumber(frameargs[2]orframeargs['month']or1)
outdate.day=tonumber(frameargs[3]orframeargs['day']or1)
outdate.precision=8
ifframeargs[1]orframeargs['year']then
ifframeargs[2]orframeargs['month']then
ifframeargs[3]orframeargs['day']then
outdate.precision=outdate.precision+1
end
outdate.precision=outdate.precision+1
end
outdate.precision=outdate.precision+1
end
outdate.calendar=mw.ustring.lower(mw.text.trim(frameargs['calendar']or'gregorian'))
returnoutdate
end

p.julianToGregorianFromFrame=function(frame)
localindate=extractDateFromFrame(frame)
indate.calendar='julian'
returnDateUtils.formatDate(p.julianToGregorian(indate))
end

p.convertToGregorianIfInInterval=function(indate)
localoutdate=indate
ifcompareDates(julianDateOfGregorianStart,indate)>=0then
outdate=p.julianToGregorian(indate)
end
returnoutdate
end

p.displayDualDateIfInInterval=function(indate,link,dateFormat,julianFormat)
localoutdate=p.convertToGregorianIfInInterval(indate)
localgregoriandate=compareDates(julianDateOfGregorianStart,indate)<0andp.julianToGregorian(indate)oroutdate
locallinkstat={old=false,new=false}
if(type(link)=='boolean')andlinkorlink=='both'orlink=='ambele'then
linkstat.old=true
linkstat.new=true
elseiflink=='old'then
linkstat.old=true
elseiflink=='new'then
linkstat.new=true
end

localfullDate
ifoutdate.year~=indate.yearthen
fullDate=DateUtils.formatDate(indate,linkstat.old,true,julianFormatordateFormat)..'/'..DateUtils.formatDate(outdate,linkstat.new,true,dateFormat)
elseifoutdate.month~=indate.monththen
fullDate=DateUtils.formatDate(indate,linkstat.old,true,julianFormatordateFormatorlinkstat.oldand'[[j F]]'or'j F')..'/'..DateUtils.formatDate(outdate,linkstat.new,true,dateFormat)
elseifoutdate.day~=indate.daythen
fullDate=DateUtils.formatDate(indate,linkstat.old,true,julianFormatordateFormatorlinkstat.oldand'[[j F|j]]'or'j')..'/'..DateUtils.formatDate(outdate,linkstat.new,true,dateFormat)
else
fullDate=DateUtils.formatDate(outdate,linkstat.neworlinkstat.old,true,dateFormat)
end

returnindate.precision>=11andDateUtils.surroundWithTimeTag(fullDate,gregoriandate)orfullDate
end

p.displayDualDateIfInIntervalFromFrame=function(frame)
localindate=extractDateFromFrame(frame)
localargs=getArgs(frame)
indate.calendar=indate.calendaror(frame.args['julian']and'julian'or'gregorian')
locallink=args['link']
localargslink=args['link']
ifargslink=='yes'orargslink=='y'orargslink=='da'orargslink=='true'orargslink=='d'thenlink='both'end

localdateFormat=args['format']orargs['date_format']orargs['dateFormat']

returnp.displayDualDateIfInInterval(indate,link,dateFormat)
end

returnp