Module:Date : Différence entre versions

De louiki
Sauter à la navigation Sauter à la recherche
 
(46 révisions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
  
 
function date.i2p( dt )
 
function date.i2p( dt )
     d = mw.text.split( dt, "/")
+
     u = date.i2u(dt)
     return d
+
    dt.args[1] = u
 +
    p = date.u2p(dt)
 +
     return p
 
end
 
end
  
 
function date.p2i( dt )
 
function date.p2i( dt )
     d = mw.text.split( dt.text, "/")
+
     u = date.p2u(dt)
     return d
+
    dt.args[1] = u
 +
    i = date.u2i(dt)
 +
     return i
 
end
 
end
  
 
function date.i2u( dt )
 
function date.i2u( dt )
     d = mw.text.split( dt, "/")
+
     d     = mw.text.split( dt.args[1], '/')
     return d
+
    day    = tonumber(d[1])
 +
    week  = tonumber(d[2])
 +
    season = tonumber(d[3])
 +
    year  = tonumber(d[4])
 +
    u      = math.floor((year-1)*365.25)+_if(season>1,8*12)+_if(season>2,89)+_if(season>3,89)+(week-1)*8+day+92
 +
     return u
 
end
 
end
  
 
function date.p2u( dt )
 
function date.p2u( dt )
     d = mw.text.split( dt, "/")
+
     d = mw.text.split( dt.args[1], '/')
     return d
+
    day  = tonumber(d[1])
 +
    month = tonumber(d[2])
 +
    year  = tonumber(d[3])
 +
    u = math.floor((year+4495)*365.25)- 241 + day +(month-5)*30 + _if(month>6, 1) + _if(month>9 and year%4==1, 1) - _if(month<5, 1) - _if(month < 4, 1) - _if(month < 2, 1)
 +
    return u
 +
end
 +
 
 +
function date.u2p( du )
 +
    year      = math.ceil((du.args[1])/365.25)-4495
 +
    day_year = du.args[1] - math.ceil((year + 4494) * 365.25+0.25)+1
 +
    month    = 1 + _if(day_year>31,1) + _if(day_year>61,1)
 +
                + _if(day_year>92,1) + _if(day_year>123,1) + _if(day_year>154,1)
 +
                + _if(day_year>184,1) + _if(day_year>215,1) + _if(day_year>245,1)
 +
                + _if(day_year>275,1) + _if(day_year>305 + _if((year%4)==1,1),1) + _if(day_year>335 + _if((year%4)==1,1),1)
 +
    day_month = day_year
 +
                - _if(month>1,31) - _if(month>2,30) - _if(month>3,31)
 +
                - _if(month>4,31) - _if(month>5,31) - _if(month>6,30)
 +
                - _if(month>7,31) - _if(month>8,30) - _if(month>9,30)
 +
                - _if(month>10,30 + _if((year%4)==1,1)) - _if(month>11,30)
 +
    day      = day_month - _if(month==1, 1)-_if(month==3, 1)-_if(month==4, 1)-_if(month==5, 1)-_if(month==7, 1)-_if(month==10 and (year%4==1), 1)
 +
    dt        = tostring(day)..'/'..tostring(month)..'/'..tostring(year)
 +
    return dt
 +
end
 +
 
 +
function date.u2i( du )
 +
    year      = math.ceil((du.args[1]-92)/365.25)
 +
    day_year  = math.ceil(du.args[1]-(year-1)*365.25-92)
 +
    season    = 1 + _if(day_year > 96,1) + _if(day_year > 96+89,1) + _if(day_year > 96+89+89, 1)
 +
    day_season = day_year - _if(season > 1,96)- _if(season > 2,89) - _if(season > 3,89)
 +
    week      = math.floor((day_season-1)/8)+1
 +
    day_week  = day_season - (week-1)*8
 +
    day        = day_week
 +
    dt        = tostring(day)..'/'..tostring(week)..'/'..tostring(season)..'/'..tostring(year)
 +
    return dt
 +
end
 +
 
 +
function _if(b, a)
 +
    if b then
 +
        return a
 +
    else
 +
        return 0
 +
    end
 +
end
 +
 
 +
function date.compare_date( range )
 +
    i = tonumber(range.args[1])
 +
    m = tonumber(range.args[1]) + tonumber(range.args[2])
 +
    res = '<table style="border-spacing: 7px;" cellpadding="5">'
 +
    while i < m do
 +
        f = {}
 +
        f["args"] = {}
 +
        f.args[1] = i
 +
        p = tostring(date.u2p(f))
 +
        res = res..'<tr style="border: 1px solid black"><td style="border: 1px solid black">'..tostring(i)..'</td><td style="border: 1px solid black">'..p..'</td><td style="border: 1px solid black">'..tostring(date.u2i(f))..'</td></tr>'
 +
        i = i +1
 +
    end
 +
    res = res..'</table>'
 +
     return res
 
end
 
end
  
 
return date
 
return date

Version actuelle datée du 12 février 2019 à 15:33

local date = {}

function date.i2p( dt )

   u = date.i2u(dt)
   dt.args[1] = u
   p = date.u2p(dt)
   return p

end

function date.p2i( dt )

   u = date.p2u(dt)
   dt.args[1] = u
   i = date.u2i(dt)
   return i

end

function date.i2u( dt )

   d      = mw.text.split( dt.args[1], '/')
   day    = tonumber(d[1])
   week   = tonumber(d[2])
   season = tonumber(d[3])
   year   = tonumber(d[4])
   u      = math.floor((year-1)*365.25)+_if(season>1,8*12)+_if(season>2,89)+_if(season>3,89)+(week-1)*8+day+92
   return u

end

function date.p2u( dt )

   d = mw.text.split( dt.args[1], '/')
   day   = tonumber(d[1])
   month = tonumber(d[2])
   year  = tonumber(d[3])
   u = math.floor((year+4495)*365.25)- 241 + day +(month-5)*30 + _if(month>6, 1) + _if(month>9 and year%4==1, 1) - _if(month<5, 1) - _if(month < 4, 1) - _if(month < 2, 1)
   return u

end

function date.u2p( du )

   year      = math.ceil((du.args[1])/365.25)-4495
   day_year = du.args[1] - math.ceil((year + 4494) * 365.25+0.25)+1
   month    = 1 + _if(day_year>31,1) + _if(day_year>61,1) 
                + _if(day_year>92,1) + _if(day_year>123,1) + _if(day_year>154,1) 
                + _if(day_year>184,1) + _if(day_year>215,1) + _if(day_year>245,1) 
                + _if(day_year>275,1) + _if(day_year>305 + _if((year%4)==1,1),1) + _if(day_year>335 + _if((year%4)==1,1),1)
   day_month = day_year 
                - _if(month>1,31) - _if(month>2,30) - _if(month>3,31)
                - _if(month>4,31) - _if(month>5,31) - _if(month>6,30)
                - _if(month>7,31) - _if(month>8,30) - _if(month>9,30)
                - _if(month>10,30 + _if((year%4)==1,1)) - _if(month>11,30)
   day       = day_month - _if(month==1, 1)-_if(month==3, 1)-_if(month==4, 1)-_if(month==5, 1)-_if(month==7, 1)-_if(month==10 and (year%4==1), 1)
   dt        = tostring(day)..'/'..tostring(month)..'/'..tostring(year)
   return dt

end

function date.u2i( du )

   year       = math.ceil((du.args[1]-92)/365.25)
   day_year   = math.ceil(du.args[1]-(year-1)*365.25-92)
   season     = 1 + _if(day_year > 96,1) + _if(day_year > 96+89,1) + _if(day_year > 96+89+89, 1)
   day_season = day_year - _if(season > 1,96)- _if(season > 2,89) - _if(season > 3,89)
   week       = math.floor((day_season-1)/8)+1
   day_week   = day_season - (week-1)*8
   day        = day_week
   dt         = tostring(day)..'/'..tostring(week)..'/'..tostring(season)..'/'..tostring(year)
   return dt

end

function _if(b, a)

   if b then
       return a
   else
       return 0
   end

end

function date.compare_date( range )

   i = tonumber(range.args[1])
   m = tonumber(range.args[1]) + tonumber(range.args[2])

res = '

' while i < m do f = {} f["args"] = {} f.args[1] = i p = tostring(date.u2p(f)) res = res..''
       i = i +1
   end
res = res..'
'..tostring(i)..''..p..''..tostring(date.u2i(f))..'

'

   return res

end

return date