Modul:Datum
Zur Navigation springen
Zur Suche springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Dokumentation und Testfälle unter Modul:Datum/Doku.
local p = {} --Erwartet einen Zahlenwert und gibt den Wochentag zurück -- Wochentag w=1 bis 7 --Rückgabe -- Wochentag -- Leerstring bei illegalen Werten local getWochentagLang=function(w) if (w== 1) then return "Rohalstag" end if (w== 2) then return "Feuertag" end if (w== 3) then return "Wassertag" end if (w== 4) then return "Windstag" end if (w== 5) then return "Erdtag" end if (w== 6) then return "Markttag" end if (w== 7) then return "Praiostag" end return "" end --Erwartet einen Zahlenwert und gibt den Planet des Wochentages zurück -- Wochentag w=1 bis 7 --Rückgabe -- Planet des Wochentages -- Leerstring bei illegalen Werten local getWochentagPlanet=function(w) if (w== 1) then return "Nandus" end if (w== 2) then return "Kor" end if (w== 3) then return "Marbo" end if (w== 4) then return "Aves" end if (w== 5) then return "Simia" end if (w== 6) then return "Horas" end if (w== 7) then return "Ucuri" end return "" end --Erwartet einen Zahlenwert und gibt den Planet des Monatsfünftels zurück -- Tag t=1 bis 30 --Rückgabe -- Planet des Monatsfünftels -- Leerstring bei illegalen Werten local getMonatsfuenftelPlanet=function(t) if (t<1) or (t>30) then return "" end f=1+math.floor((t-1)/6) if (f== 1) then return "Simia" end if (f== 2) then return "Aves" end if (f== 3) then return "Kor" end if (f== 4) then return "Ucuri" end if (f== 5) then return "Marbo" end return "" end --Erwartet einen Zahlenwert und gibt den Planet des Tages im Monatsfünftel zurück -- Tag t=1 bis 30 --Rückgabe -- Planet des Tags im Monatsfünftels -- Leerstring bei illegalen Werten local getMonatstagPlanet=function(t) if (t<1) or (t>30) then return "" end f=1+(t-1)%6 if (f== 1) then return "Horas" end if (f== 2) then return "Simia" end if (f== 3) then return "Levthan" end if (f== 4) then return "Kor" end if (f== 5) then return "Ucuri" end if (f== 6) then return "Marbo" end return "" end --Erwartet einen Zahlenwert und gibt das Sternbild des Monats zurück -- Monat m=1 bis 13 --Rückgabe -- Sternbild des Monats -- Leerstring bei illegalen Werten local getMonatsSternbild=function(m) if (m== 1) then return "Greif" end if (m== 2) then return "Schwert" end if (m== 3) then return "Delfin" end if (m== 4) then return "Gans" end if (m== 5) then return "Rabe" end if (m== 6) then return "Schlange" end if (m== 7) then return "Eisbär" end if (m== 8) then return "Eidechse" end if (m== 9) then return "Fuchs" end if (m==10) then return "Storch" end if (m==11) then return "Hammer und Amboss" end if (m==12) then return "Stute" end if (m==13) then return "Sternenleere" end return "" end --Erwartet einen Zahlenwert und gibt den vollständigen Monat zurück -- Monat m=1 bis 13 --Rückgabe -- Monat -- Leerstring bei illegalen Werten local getMonatLang=function(m) if (m== 1) then return "Praios" end if (m== 2) then return "Rondra" end if (m== 3) then return "Efferd" end if (m== 4) then return "Travia" end if (m== 5) then return "Boron" end if (m== 6) then return "Hesinde" end if (m== 7) then return "Firun" end if (m== 8) then return "Tsa" end if (m== 9) then return "Phex" end if (m==10) then return "Peraine" end if (m==11) then return "Ingerimm" end if (m==12) then return "Rahja" end if (m==13) then return "Namenloser" end return "" end --Erwartet einen Zahlenwert und gibt den dreibuchstabigen Monat zurück -- Monat m=1 bis 13 --Rückgabe -- dreibuchstabiger Monat -- Leerstring bei illegalen Werten local getMonatKurz=function(m) if (m== 1) then return "Pra" end if (m== 2) then return "Ron" end if (m== 3) then return "Eff" end if (m== 4) then return "Tra" end if (m== 5) then return "Bor" end if (m== 6) then return "Hes" end if (m== 7) then return "Fir" end if (m== 8) then return "Tsa" end if (m== 9) then return "Phe" end if (m==10) then return "Per" end if (m==11) then return "Ing" end if (m==12) then return "Rah" end if (m==13) then return "Nam" end return "" end --Erwartet einen Zahlenwert und gibt den Stundennamen -- Stunde h=0 bis 23 -- Genauigkeit g --Rückgabe -- Stundenname -- Leerstring bei illegalen Werten local getStundeBeschreibung=function(h,g) if(g<=2) then if (h== 0) then return "zur nächtlichen Praiosstunde" end if (h== 1) then return "zur nächtlichen Rondrastunde" end if (h== 2) then return "zur nächtlichen Efferdstunde" end if (h== 3) then return "zur nächtlichen Traviastunde" end if (h== 4) then return "zur morgendlichen Boronstunde" end if (h== 5) then return "zur morgendlichen Hesindestunde" end if (h== 6) then return "zur morgendlichen Firunstunde" end if (h== 7) then return "zur morgendlichen Tsastunde" end if (h== 8) then return "zur morgendlichen Phexstunde" end if (h== 9) then return "zur morgendlichen Perainestunde" end if (h==10) then return "zur mittäglichen Ingerimmstunde" end if (h==11) then return "zur mittäglichen Rahjastunde" end if (h==12) then return "zur mittäglichen Praiosstunde" end if (h==13) then return "zur mittäglichen Rondrastunde" end if (h==14) then return "zur mittäglichen Efferdstunde" end if (h==15) then return "zur mittäglichen Traviastunde" end if (h==16) then return "zur abendlichen Boronstunde" end if (h==17) then return "zur abendlichen Hesindestunde" end if (h==18) then return "zur abendlichen Firunstunde" end if (h==19) then return "zur abendlichen Tsastunde" end if (h==20) then return "zur abendlichen Phexstunde" end if (h==21) then return "zur abendlichen Perainestunde" end if (h==22) then return "zur nächtlichen Ingerimmstunde" end if (h==23) then return "zur nächtlichen Rahjastunde" end end if (g==3) then if (h>= 0) and (h<= 1) then return "mitten in der Nacht" end if (h>= 2) and (h<= 3) then return "spät in der Nacht" end if (h>= 4) and (h<= 5) then return "früh am Morgen" end if (h>= 6) and (h<= 7) then return "mitten am Morgen" end if (h>= 8) and (h<= 9) then return "spät am Morgen" end if (h>=10) and (h<=11) then return "früh am Mittag" end if (h>=12) and (h<=13) then return "mitten am Mittag" end if (h>=14) and (h<=15) then return "spät am Mittag" end if (h>=16) and (h<=17) then return "früh am Abend" end if (h>=18) and (h<=19) then return "mitten am Abend" end if (h>=20) and (h<=21) then return "spät am Abend" end if (h>=22) and (h<=23) then return "früh in der Nacht" end end if (g==4) then if (h>=22) or (h<= 3) then return "in der Nacht" end if (h>= 4) and (h<= 9) then return "am Morgen" end if (h>=10) and (h<=15) then return "am Mittag" end if (h>=16) and (h<=21) then return "am Abend" end end return "" end --Erwartet vier Zahlenwerte und gibt den Wochentag je nach Genauigkeit als String zurück -- Tag t=1 bis 30 (bzw. 5 bei m=13) -- Monat m=1 bis 13 -- Jahr j=minInt bis maxInt -- Genauigkeit g=-2 bis -1 --Rückgabe -- Wochentag plus ", " -- Leerstring bei illegalen Werten local getWochentag=function(t,m,j,g) if (m<1) or (m>13) or (t<1) or (t>30) or (g>=0) then return 0 end --Tag des Jahres d=(m-1)*30+t w=(d+j+5)%7 return (w+1) end --Erwartet drei Zahlenwerte und gibt den Tag je nach Genauigkeit als String zurück -- Tag t=1 bis 30 (bzw. 5 bei m=13) -- Monat m=1 bis 13 -- Genauigkeit g=0 bis 1 --Rückgabe -- entweder Zahl plus ". " bei g==0 -- oder Anfang/Mitte/Ende (bzw. leer bei m=13) bei g==1 -- Leerstring bei illegalen Werten local getTagBeschreibung=function(t,m,g) if (m<1) or (m>13) or (t<1) or (t>30) or (g>1) then return "" end if (g<=0) then return t..". " end if (m==13) then return "" end if (t<=10) then return "Anfang " end if (t>=21) then return "Ende " end return "Mitte " end --Erwartet zwei Zahlenwerte und gibt den Monat je nach Genauigkeit als String zurück -- Monat m=1 bis 13 -- Genauigkeit g=0 bis 3 --Rückgabe -- entweder Monatskürzel bei g==0 bis g==2 -- oder Frühling/Sommer/Herbst/Winter bei g==3 -- Leerstring bei illegalen Werten local getMonatBeschreibung=function(m,g) if (m<1) or (m>13) or (g>3) then return "" end if (g<0) then return getMonatLang(m).." " end if (g<3) then return getMonatKurz(m).." " end if (m<3) then return "Sommer am Anfang " end if((m>=3)and(m<=5)) then return "Herbst " end if((m>=6)and(m<=8)) then return "Winter " end if((m>=9)and(m<=11)) then return "Frühling " end return "Sommer am Ende " end --Erwartet zwei Zahlenwerte und gibt das Jahr je nach Genauigkeit als String zurück -- Jahr j=minInt bis maxInt -- Genauigkeit g=0 bis 9 --Rückgabe -- entweder Jahr plus " BF" bzw. " vBF" bei g==0 bis g==4 -- oder "er Jahre (v)BF" bei g==5 -- oder "Anfang/Mitte/Ende x. Jhd. (v)BF" bei g==6 -- oder "x. Jhd. (v)BF" bei g==7 -- oder "Anfang/Mitte/Ende x. Jtd. (v)BF" bei g==8 -- oder "x. Jtd. (v)BF" bei g==9 -- Leerstring bei illegalen Werten local getJahrBeschreibung=function(j,g) if (g>9) then return "" end v=false; k=" BF" if (j<0) then k=" vBF" j=-j v=true end js=j if(g==5) then jr=10*math.floor(j/10) js=jr.."er Jahre" end if((g==6)or(g==7)) then jr=math.floor(j/100)+1 jd=j-((jr-1)*100) jds="Mitte " if((v==false) and (jd<=33)) then jds="Anfang " end if((v==true) and (jd<=33)) then jds="Ende " end if((v==false) and (jd>=67)) then jds="Ende " end if((v==true) and (jd>=67)) then jds="Anfang " end if(g==7) then jds="" end js=jds..jr..". Jhd." end if((g==8)or(g==9)) then jr=math.floor(j/1000)+1 jd=j-((jr-1)*1000) jds="Mitte " if((v==false) and (jd<=333)) then jds="Anfang " end if((v==true) and (jd<=333)) then jds="Ende " end if((v==false) and (jd>=667)) then jds="Ende " end if((v==true) and (jd>=667)) then jds="Anfang " end if(g==9) then jds="" end js=jds..jr..". Jts." end return js..k end --Erwartet t,m,j des aventurischen Datums plus Genauigkeit g von 0 bis 11 und gibt ein formatiertes Ergebnis zurück local formatdatum=function(t,m,j,g) w=getWochentag(t,m,j,g) as="" ws="" as=getWochentagPlanet(w)..", "..getMonatstagPlanet(t)..", "..getMonatsfuenftelPlanet(t)..", "..getMonatsSternbild(m) if (as==", , , ") then as="" end; if (g==-3) then return as end if (g==-2) and (as~="") then as=" ("..as..")" else as="" end if (w>=1) and (w<=7) then ws=getWochentagLang(w)..", "; end ts=getTagBeschreibung(t,m,g) ms=getMonatBeschreibung(m,g) js=getJahrBeschreibung(j,g) res=ws..ts..ms..js..as if (res=="")and(g==10) then res="unbekannt" end return res end --Erwartet h,m,s der aventurischen Zeit plus Genauigkeit g und gibt ein formatiertes Ergebnis zurück local formatzeit=function(h,m,s,g) hs=getStundeBeschreibung(h,g) --0: Format "17:43:25 Uhr" if g==0 then return string.format("%02d:%02d:%02d",h,m,s)..' Uhr' end --1: Format "17:43 Uhr" if g==1 then return string.format("%02d:%02d",h,m)..' Uhr' end --2: Format "zur abendlichen Hesindestunde" --3: Format "früh am Abend" --4: Format "am abend" if (g>=2)and(g<=4) then return hs end if (g==5) then return "unbekannte Zeit" end return "" end --Erwartet t,m,j des aventurischen Datums plus Genauigkeit g von 0 bis 9 und gibt ein formatiertes Ergebnis zurück local indextag=function(t,m,j,g) r=m*100+t s=tostring(r) if (m<10) then s='0'..s end return s end --Erwartet t,m,j des aventurischen Datums plus Genauigkeit g von 0 bis 9 und gibt ein formatiertes Ergebnis zurück local indexdatum=function(t,m,j,g) return j*10000+m*100+t end --Gibt das aktuelle Datum als array['tag','monat','jahr','genauigkeit'=0] zurück local aktuellesdatum=function() actdate=os.date('*t') datum={} datum['error']=nil year=tonumber(actdate.year) datum['jahr']=year-977; yday=tonumber(actdate.yday) datum['monat']=math.floor((yday-1)/30)+1 datum['tag']=(yday-1)%30+1 datum['genauigkeit']=0 return datum end --Alter local alter=function(t1,m1,j1,t2,m2,j2,g,num) i1=j1*365+(m1-1)*30+t1 i2=j2*365+(m2-1)*30+t2 at=i2-i1 if (at<0) then return '' end j=math.floor(at/365) if num then return j end if(g<=4) then if (j==1) then return "1 Jahr" end return j.." Jahre" end if(g<=6) then jr=10*math.floor(j/10) return "über "..jr.." Jahre" end if(g<=8) then jr=100*math.floor(j/100) return "über "..jr.." Jahre" end if(g<=9) then jr=1000*math.floor(j/1000) return "über "..jr.." Jahre" end return "unbekannt" end --Dekodiert ein Datum im Format [[T.]M.]J[/G] local decodedatum=function(s) datg=mw.text.split(s,'/',true) if(#datg<2) then table.insert(datg,0) end dat=mw.text.split(datg[1],'.',true) while(#dat<3) do table.insert(dat,0,0) end result={} result['genauigkeit']=tonumber(datg[2]) result['error']=nil result['jahr']=tonumber(dat[3]) result['monat']=tonumber(dat[2]) result['tag']=tonumber(dat[1]) if(result['genauigkeit']==nil) then result['error']="Genauigkeit muss eine Zahl sein." end if(result['jahr']==nil) then result['error']="Jahr muss eine Zahl sein." end if(result['monat']==nil) then result['error']="Monat muss eine Zahl sein." end if(result['tag']==nil) then result['error']="Tag muss eine Zahl sein." end return result end --Dekodiert eine Zeit im Format HH:[MM[:SS]][/G], Heuristik für das alte Nummernformat HHMM local decodezeit=function(s) datg=mw.text.split(s,'/',true) if(#datg<2) then table.insert(datg,0) end olddate=false dat=mw.text.split(datg[1],':',true) if(mw.ustring.len(dat[1])<=2) then while(#dat<3) do table.insert(dat,0) end else dat[1]=mw.ustring.sub(datg[1],1,2) dat[2]=mw.ustring.sub(datg[1],-2) dat[3]='00' olddate=true end result={} result['genauigkeit']=tonumber(datg[2]) result['error']=nil result['stunde']=tonumber(dat[1]) result['minute']=tonumber(dat[2]) result['sekunde']=tonumber(dat[3]) if(result['genauigkeit']==nil) then result['error']="Genauigkeit muss eine Zahl sein." end if(result['stunde']==nil) then result['error']="Stunde muss eine Zahl sein." end if(result['minute']==nil) then result['error']="Minute muss eine Zahl sein." end if(result['sekunde']==nil) then result['error']="Sekunde muss eine Zahl sein." end if(olddate) then result['genauigkeit']=2 end return result end --gibt eine tabelle mit den perioden zurück, damit es nicht mehrfach definiert werden muss local getperiodentable= function() result={} result[ 1]={von=-999999999, per= "Periode01", name= "Vorzeiten" } result[ 2]={von= -17000000, per= "Periode02", name= "Besiedlungszeit" } result[ 3]={von= -5659999, per= "Periode03", name= "Dunkle Zeiten und spätes Altes Reich" } result[ 4]={von= 207, per= "Periode04", name= "Reichsgründung" } result[ 5]={von= 539999, per= "Periode05", name= "Zeit der Klugen Kaiser" } result[ 6]={von= 3350320, per= "Periode06", name= "Priesterkaiserzeit" } result[ 7]={von= 4659999, per= "Periode07", name= "Rohalszeit und Magierkriege" } result[ 8]={von= 5959999, per= "Periode08", name= "Frühe Almadaner Dynastie" } result[ 9]={von= 7729999, per= "Periode09", name= "Späte Almadaner Dynastie" } result[10]={von= 9029999, per= "Periode10", name= "Kaiserlose Zeiten" } result[11]={von= 9329999, per= "Periode11", name= "Pervals Regierungszeit" } result[12]={von= 9489999, per= "Periode12", name= "Bardos und Cellas Regierungszeit" } result[13]={von= 9749999, per= "Periode13", name= "Retos Regierungszeit" } result[14]={von= 9920315, per= "Periode14", name= "Hals Regierungszeit" } result[15]={von= 10100909, per= "Periode15", name= "Answinkrise und Orkenzug" } result[16]={von= 10140618, per= "Periode16", name= "Brins Regierungszeit und Borbaradkrieg" } result[17]={von= 10211123, per= "Periode17", name= "Emers Regierungszeit und Jahr des Feuers" } result[18]={von= 10280915, per= "Periode18", name= "Rohajas Regierungszeit in der Konsolidierung" } result[19]={von= 10300101, per= "Periode19", name= "Rohajas Regierungszeit unter Staatsrat Schroeckh" } result[20]={von= 10351211, per= "Periode20", name= "Rohajas Regierungszeit unter Cantzler Luring" } result[21]={von= 10460101, per= "Periode21", name= "Rohajas Regierungszeit unter Großfürst Alderan" } result["min"]=1 result["max"]=21 return result end --Gibt die Periode nach dem Jahr, Monat, Tag zurück local periode=function(t,m,j,g) if (g>=8) then return "Unbekannt" end index=t+m*100+j*10000 perioden=getperiodentable() for p = perioden.max, perioden.min+1, -1 do if (index>perioden[p].von) then return perioden[p].name end end return perioden[perioden.min].name end --Gibt die Periodenzahl nach dem Jahr, Monat, Tag zurück local periodenzahl=function(index) perioden=getperiodentable() for p = perioden.max, perioden.min+1, -1 do if (index>perioden[p].von) then return perioden[p].per end end return perioden[perioden.min].per end --Gibt die vorhergehende Periode zurück local periodevorgaenger=function(name) perioden=getperiodentable() for p = perioden.max, perioden.min+1, -1 do if (name==perioden[p].name) then return perioden[p-1].name end end return "" end --Gibt die nachfolgende Periode zurück local periodenachfolger=function(name) perioden=getperiodentable() for p = perioden.max-1, perioden.min, -1 do if (name==perioden[p].name) then return perioden[p+1].name end end return "" end --Gibt das Anfangsjahr einer Periode zurück local periodeanfang=function(name) perioden=getperiodentable() for p = perioden.max, perioden.min, -1 do if (name==perioden[p].name) then return perioden[p].von end end return perioden[perioden.min].von end --Gibt das Endjahr einer Periode zurück local periodeende=function(name) perioden=getperiodentable() if (name==perioden[perioden.max].name) then return 999999999 end for p = perioden.max-1, perioden.min, -1 do if (name==perioden[p].name) then return perioden[p+1].von end end return perioden[perioden.min+1].von end function p.formatzeitindex() frame=mw.getCurrentFrame() zeit=tonumber(frame.args['ZeitIndex']) if (tonumber(zeit)==nil) then return "" end gnau=tonumber(frame.args['Genauigkeit']) j=math.floor(zeit/10000) m=math.floor((zeit-j*10000)/100) t=zeit-j*10000-m*100 return formatdatum(t,m,j,gnau) end function p.DatumTextTMJG() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end datum=decodedatum(dat) gen=frame.args['Genauigkeit'] if(gen=='') then gen=datum['genauigkeit'] end if(gen==nil) then gen=datum['genauigkeit'] end if(type(gen)~='number') then gen=tonumber(gen) end if(datum['error']==nil) then return formatdatum(datum['tag'],datum['monat'],datum['jahr'],gen) else return datum['error'] end end function p.DatumIndexTMJG() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end datum=decodedatum(dat) if(datum['error']==nil) then return indexdatum(datum['tag'],datum['monat'],datum['jahr'],datum['genauigkeit']) else return datum['error'] end end function p.DatumPeriodeTMJG() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end datum=decodedatum(dat) if(datum['error']==nil) then return periode(datum['tag'],datum['monat'],datum['jahr'],datum['genauigkeit']) else return datum['error'] end end function p.DatumPeriodenzahlTMJG() frame=mw.getCurrentFrame() dat=frame.args['DatumIndex'] if(dat=='') then return '' end if(dat==nil) then return '' end return periodenzahl(tonumber(dat)) end function p.DatumPeriodeVorgaenger() frame=mw.getCurrentFrame() name=frame.args['Name'] if(name=='') then return '' end if(name==nil) then return '' end return periodevorgaenger(name) end function p.DatumPeriodeNachfolger() frame=mw.getCurrentFrame() name=frame.args['Name'] if(name=='') then return '' end if(name==nil) then return '' end return periodenachfolger(name) end function p.DatumPeriodeAnfang() frame=mw.getCurrentFrame() name=frame.args['Name'] if(name=='') then return '' end if(name==nil) then return '' end return periodeanfang(name) end function p.DatumPeriodeEnde() frame=mw.getCurrentFrame() name=frame.args['Name'] if(name=='') then return '' end if(name==nil) then return '' end return periodeende(name) end function p.DatumTagTMJG() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end datum=decodedatum(dat) if(datum['error']==nil) then return indextag(datum['tag'],datum['monat'],datum['jahr'],datum['genauigkeit']) else return datum['error'] end end function p.DatumAlterTMJG() frame=mw.getCurrentFrame() dat1=frame.args['Tsa'] dat2=frame.args['Boron'] num=frame.args['Nummer'] if((num=='')or(num==nil)) then num=false else num=true end if((dat1=='')or(dat1==nil)) then return '' end datum1=decodedatum(dat1) if((dat2=='')or(dat2==nil)) then datum2=aktuellesdatum() else datum2=decodedatum(dat2) end if((datum1['error']==nil)and(datum2['error']==nil)) then g=math.max(datum1['genauigkeit'],datum2['genauigkeit']); return alter(datum1['tag'],datum1['monat'],datum1['jahr'], datum2['tag'],datum2['monat'],datum2['jahr'],g,num) else if(datum1['error']==nil) then datum1['error']='' end if(datum2['error']==nil) then datum2['error']='' end return datum1['error']..datum2['error'] end end function p.DatumAktuell() frame=mw.getCurrentFrame() g=frame.args['Genauigkeit'] if((g=='')or(g==nil)) then g='0' end gen=tonumber(g) datum=aktuellesdatum() return formatdatum(datum['tag'],datum['monat'],datum['jahr'],gen) end function p.DatumAktuellTag() frame=mw.getCurrentFrame() datum=aktuellesdatum() return indextag(datum['tag'],datum['monat'],datum['jahr'],datum['genauigkeit']) end function p.DatumSortierwert() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end zet=frame.args['Zeit'] if(zet=='') then zet='0' end if(zet==nil) then zet='0' end datum=decodedatum(dat) if(datum['monat']<1) then datum['monat']=1 end if(datum['tag']<1) then datum['tag']=1 end zeit=decodezeit(zet) if(datum['error']==nil) then result=datum['jahr']*365+(datum['monat']-1)*30+(datum['tag']-1)+(zeit['stunde']*60*60+zeit['minute']*60+zeit['sekunde'])/86400 resultstring=tostring(result) split=mw.text.split(resultstring,'.',true) if(#split~=2) then return resultstring end return split[1]..","..split[2] else return datum['error'] end end function p.DatumSortierwertE() frame=mw.getCurrentFrame() dat=frame.args['Datum'] if(dat=='') then return '' end if(dat==nil) then return '' end zet=frame.args['Zeit'] if(zet=='') then zet='0' end if(zet==nil) then zet='0' end datum=decodedatum(dat) zeit=decodezeit(zet) if(datum['error']==nil) then result=datum['jahr']*365+(datum['monat']-1)*30+(datum['tag']-1)+(zeit['stunde']*60*60+zeit['minute']*60+zeit['sekunde'])/86400 resultstring=tostring(result) return resultstring else return datum['error'] end end function p.ZeitTextHMSG() frame=mw.getCurrentFrame() zet=frame.args['Zeit'] if(zet=='') then return '' end if(zet==nil) then return '' end zeit=decodezeit(zet) gen=frame.args['Genauigkeit'] if(gen=='') then gen=zeit['genauigkeit'] end if(gen==nil) then gen=zeit['genauigkeit'] end if(type(gen)~='number') then gen=tonumber(gen) end if(zeit['error']==nil) then return formatzeit(zeit['stunde'],zeit['minute'],zeit['sekunde'],gen) else return zeit['error'] end end return p