Advertisement
Alyssa

Date_API

Mar 20th, 2015
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.17 KB | None | 0 0
  1. months = {}
  2. months[1] = 31
  3. months[2] = months[1] + 28
  4. months[3] = months[2] + 31
  5. months[4] = months[3] + 30
  6. months[5] = months[4] + 31
  7. months[6] = months[5] + 30
  8. months[7] = months[6] + 31
  9. months[8] = months[7] + 31
  10. months[9] = months[8] + 30
  11. months[10] = months[9] + 31
  12. months[11] = months[10] + 30
  13. months[12] = months[11] + 31
  14. lMonths = {}
  15. lMonths[1] = 31
  16. lMonths[2] = months[1] + 29
  17. lMonths[3] = months[2] + 31
  18. lMonths[4] = months[3] + 30
  19. lMonths[5] = months[4] + 31
  20. lMonths[6] = months[5] + 30
  21. lMonths[7] = months[6] + 31
  22. lMonths[8] = months[7] + 31
  23. lMonths[9] = months[8] + 30
  24. lMonths[10] = months[9] + 31
  25. lMonths[11] = months[10] + 30
  26. lMonths[12] = months[11] + 31
  27.  
  28. --if year % 4 == 0 and ( year % 100 ~= 0 or year % 400 == 0 ) then leap year? end
  29. --math.floor(year / 4) - math.floor(year / 100) + math.floor(year / 400)
  30. function genDate(rday)
  31.         local baseYear = math.ceil(rday / 365)
  32.         calcYear = baseYear -1
  33.         calcDay = rday
  34.         change = 1
  35.         toAdd = 0
  36.         while change > 0 do
  37.                 numLeaps = math.floor(calcYear / 4) - math.floor(calcYear / 100) + math.floor(calcYear / 400)
  38.                 calcDay = calcDay + numLeaps
  39.                 calcYear = math.floor(numLeaps / 365)
  40.                 change = numLeaps
  41.                 toAdd = toAdd + change
  42.                 --Seriously hoping this works
  43.         end
  44.         --rday = rday + toAdd
  45.     --This code works so I'm not changing it ;p
  46.         local year = math.ceil(rday / 365)
  47.         local doy = rday % 365
  48.         if doy == 0 then
  49.                 doy = 365
  50.         end
  51.         uMonths = {}
  52.         if year % 4 == 0 and ( year % 100 ~= 0 or year % 400 == 0 ) then
  53.                 uMonths = lMonths
  54.         else
  55.                 uMonths = months
  56.         end
  57.         for i = 1, 12 do
  58.                 if doy <= uMonths[i] then
  59.                         month = i
  60.                         break
  61.                 end
  62.         end
  63.         if month > 2 then
  64.                 if year % 4 == 0 and ( year % 100 ~= 0 or year % 400 == 0 ) then
  65.                         rday = rday + 0
  66.                 end
  67.         end
  68.         if month > 1 then
  69.                 day = doy - uMonths[month-1]
  70.         else
  71.                 day = doy
  72.         end
  73.         local year = math.ceil(rday / 365)
  74.         local doy = rday % 365
  75.         if doy == 0 then
  76.                 doy = 365
  77.         end
  78.         uMonths = {}
  79.         if year % 4 == 0 then
  80.                 if year % 100 == 0 then
  81.                         if year % 400 == 0 then
  82.                                 uMonths = lMonths
  83.                         else
  84.                                 uMonths = months
  85.                         end
  86.                 else
  87.                         uMonths = lMonths
  88.                 end
  89.         else
  90.                 uMonths = months
  91.         end
  92.         for i = 1, 12 do
  93.                 if doy <= uMonths[i] then
  94.                         month = i
  95.                         break
  96.                 end
  97.         end
  98.         if month > 1 then
  99.                 day = doy - uMonths[month-1]
  100.         else
  101.                 day = doy
  102.         end
  103.         return day, month, year
  104.         --Maybe this will work
  105. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement