aboutsummaryrefslogtreecommitdiffstats
path: root/lib/logger/period.rb
diff options
context:
space:
mode:
authorColby Swandale <me@colby.fyi>2018-12-12 14:08:35 +1100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-07-15 14:43:07 +0900
commitbbe157f34046ec9ef81e6ad9ed37c86a0d9155e4 (patch)
tree795ef0226ac95ede84fcee787dbe6cec19418463 /lib/logger/period.rb
parent136196785b10f7cffa1e4d557bc3bcc0e863813a (diff)
downloadruby-bbe157f34046ec9ef81e6ad9ed37c86a0d9155e4.tar.gz
[ruby/logger] split logger classes/modules into separate files
https://github.com/ruby/logger/commit/f10ce9fff2
Diffstat (limited to 'lib/logger/period.rb')
-rw-r--r--lib/logger/period.rb41
1 files changed, 41 insertions, 0 deletions
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