comparison mod_muc_log_http/muc_log_http/mod_muc_log_http.lua @ 119:e6592d8305cb

mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
author Thilo Cestonaro <thilo@cestona.ro>
date Fri, 15 Jan 2010 09:58:21 +0100
parents 7eadcf0a0190
children 7a2d33e8ad1f
comparison
equal deleted inserted replaced
118:7eadcf0a0190 119:e6592d8305cb
463 (month >= 8 and month%2 == 0 and day + 1 > 31) or 463 (month >= 8 and month%2 == 0 and day + 1 > 31) or
464 (month >= 8 and month%2 == 1 and day + 1 > 30) 464 (month >= 8 and month%2 == 1 and day + 1 > 30)
465 then 465 then
466 if month + 1 > 12 then 466 if month + 1 > 12 then
467 year = year + 1; 467 year = year + 1;
468 month = 1;
469 day = 1;
468 else 470 else
469 month = month + 1; 471 month = month + 1;
472 day = 1;
470 end 473 end
471 else 474 else
472 day = day + 1; 475 day = day + 1;
473 end 476 end
474 return strformat("%.02d%.02d%.02d", year, month, day); 477 return strformat("%.02d%.02d%.02d", year, month, day);
494 end 497 end
495 end 498 end
496 499
497 local function decrementDay(bare_day) 500 local function decrementDay(bare_day)
498 local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)"); 501 local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
502 local leapyear = false;
499 module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year)) 503 module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
504
500 day = tonumber(day); 505 day = tonumber(day);
501 month = tonumber(month); 506 month = tonumber(month);
502 year = tonumber(year); 507 year = tonumber(year);
503 508
509 if year%4 == 0 and year%100 == 0 then
510 if year%400 == 0 then
511 leapyear = true;
512 else
513 leapyear = false; -- turn of the century but not a leapyear
514 end
515 elseif year%4 == 0 then
516 leapyear = true;
517 end
518
504 if day - 1 == 0 then 519 if day - 1 == 0 then
505 if month - 1 == 0 then 520 if month - 1 == 0 then
506 year = year - 1; 521 year = year - 1;
522 month = 12;
523 day = 31;
507 else 524 else
508 month = month - 1; 525 month = month - 1;
526 if (month == 2 and leapyear) then day = 29
527 elseif (month == 2 and not leapyear) then day = 28
528 elseif (month < 8 and month%2 == 1) or (month >= 8 and month%2 == 0) then day = 31
529 else day = 30
530 end
509 end 531 end
510 else 532 else
511 day = day - 1; 533 day = day - 1;
512 end 534 end
513 return strformat("%.02d%.02d%.02d", year, month, day); 535 return strformat("%.02d%.02d%.02d", year, month, day);