diff options
author | Colby Swandale <me@colby.fyi> | 2018-12-12 14:08:35 +1100 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-07-15 14:43:07 +0900 |
commit | bbe157f34046ec9ef81e6ad9ed37c86a0d9155e4 (patch) | |
tree | 795ef0226ac95ede84fcee787dbe6cec19418463 /lib/logger/period.rb | |
parent | 136196785b10f7cffa1e4d557bc3bcc0e863813a (diff) | |
download | ruby-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.rb | 41 |
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 |