Modul:Datum
Zur Navigation springen
Zur Suche springen
Dokumentation und Testfälle unter Modul:Datum/Doku.
require("Modul:Datum Periode")
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 die Periode nach dem Jahr, Monat, Tag zurück
--Die Periodentabelle ist im "Modul:Datum Periode" damit sie Wiki-spezifisch angepasst werden kann
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