# frozen_string_literal: trueclassLoggermodulePeriodmodule_functionSiD=24*60*60defnext_rotate_time(now,shift_age)caseshift_agewhen'daily',:dailyt=Time.mktime(now.year,now.month,now.mday)+SiDwhen'weekly',:weeklyt=Time.mktime(now.year,now.month,now.mday)+SiD*(7-now.wday)when'monthly',:monthlyt=Time.mktime(now.year,now.month,1)+SiD*32returnTime.mktime(t.year,t.month,1)when'now','everytime',:now,:everytimereturnnowelseraiseArgumentError,"invalid :shift_age #{shift_age.inspect}, should be daily, weekly, monthly, or everytime"endift.hour.nonzero?ort.min.nonzero?ort.sec.nonzero?hour=t.hourt=Time.mktime(t.year,t.month,t.mday)t+=SiDifhour>12endtenddefprevious_period_end(now,shift_age)caseshift_agewhen'daily',:dailyt=Time.mktime(now.year,now.month,now.mday)-SiD/2when'weekly',:weeklyt=Time.mktime(now.year,now.month,now.mday)-(SiD*now.wday+SiD/2)when'monthly',:monthlyt=Time.mktime(now.year,now.month,1)-SiD/2when'now','everytime',:now,:everytimereturnnowelseraiseArgumentError,"invalid :shift_age #{shift_age.inspect}, should be daily, weekly, monthly, or everytime"endTime.mktime(t.year,t.month,t.mday,23,59,59)endendend