From bbe157f34046ec9ef81e6ad9ed37c86a0d9155e4 Mon Sep 17 00:00:00 2001 From: Colby Swandale Date: Wed, 12 Dec 2018 14:08:35 +1100 Subject: [ruby/logger] split logger classes/modules into separate files https://github.com/ruby/logger/commit/f10ce9fff2 --- lib/logger/period.rb | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/logger/period.rb (limited to 'lib/logger/period.rb') diff --git a/lib/logger/period.rb b/lib/logger/period.rb new file mode 100644 index 0000000000..bb8cffc2f8 --- /dev/null +++ b/lib/logger/period.rb @@ -0,0 +1,41 @@ +class Logger + module Period + module_function + + SiD = 24 * 60 * 60 + + def next_rotate_time(now, shift_age) + case shift_age + when 'daily' + t = Time.mktime(now.year, now.month, now.mday) + SiD + when 'weekly' + t = Time.mktime(now.year, now.month, now.mday) + SiD * (7 - now.wday) + when 'monthly' + t = Time.mktime(now.year, now.month, 1) + SiD * 32 + return Time.mktime(t.year, t.month, 1) + else + return now + end + if t.hour.nonzero? or t.min.nonzero? or t.sec.nonzero? + hour = t.hour + t = Time.mktime(t.year, t.month, t.mday) + t += SiD if hour > 12 + end + t + end + + def previous_period_end(now, shift_age) + case shift_age + when 'daily' + t = Time.mktime(now.year, now.month, now.mday) - SiD / 2 + when 'weekly' + t = Time.mktime(now.year, now.month, now.mday) - (SiD * now.wday + SiD / 2) + when 'monthly' + t = Time.mktime(now.year, now.month, 1) - SiD / 2 + else + return now + end + Time.mktime(t.year, t.month, t.mday, 23, 59, 59) + end + end +end -- cgit v1.2.3