class Defoker::DateBaseName

DateBaseName provides methods that various kind of date-base formated name. date base, month base, year base, and etc…

Public Class Methods

to_yyyy(year, additional: '') click to toggle source

Get year-base formated name. if additional is empty, return year YYYY. if additional is not empty, return year YYYY_additional.

@example only year

DateBaseName.new.to_yyyy(Date.new(2014)) #=> "2014"

@example year with additional text

DateBaseName.new.to_yyyy(Date.new(2014), additional: 'hoge') #=> "2014_hoge"

@param [Date,DateTime] year target year @param [String] additional additional text.

If you want to get only year, you can omit this option.

@return [String] year-based formated name

# File lib/date_base_name.rb, line 116
def self.to_yyyy(year, additional: '')
  DateBaseNameValidators.validate_date(year)
  v = year.strftime('%Y')
  return v if additional.empty?
  "#{v}_#{additional}"
end
to_yyyy_list(year, count: 3, additional: '') click to toggle source

Get year-base formated name list. if additional is empty, return year YYYY. if additional is not empty, return year YYYY_additional.

@example only year

DateBaseName.new.to_yyyymm_list(Date.new(2014), count: 4))
=> ["2014","2015","2016","2017"]

@example only year (omit count. default = 3)

DateBaseName.new.to_yyyymm_list(Date.new(2014)))
=> ["2014","2015","2016"]

@example year with additional text

DateBaseName.new.to_yyyymm_list(Date.new(2014), count: 4, additional: 'hoge')
=> ["2014_hoge","2015_hoge","2016_hoge","2017_hoge"]

@param [Date,DateTime] year year @param [Fixnum] count year count. default = 3. @param [String] additional additional text.

If you want to get only year, you can omit this option.

@return [Array(String)] year-based formated names

# File lib/date_base_name.rb, line 142
def self.to_yyyy_list(year, count: 3, additional: '')
  DateBaseNameValidators.validate_date(year)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyy(year >> (i * 12), additional: additional)
  end
end
to_yyyymm(month, additional: '') click to toggle source

Get month-base formated name. if additional is empty, return month YYYYMM. if additional is not empty, return month YYYYMM_additional.

@example only month

DateBaseName.new.to_yyyymm(Date.new(2014,9)) #=> "201409"

@example month with additional text

DateBaseName.new.to_yyyymm(Date.new(2014,9), additional: 'hoge') #=> "201409_hoge"

@param [Date,DateTime] month target month @param [String] additional additional text.

If you want to get only month, you can omit this option.

@return [String] month-based formated name

# File lib/date_base_name.rb, line 69
def self.to_yyyymm(month, additional: '')
  DateBaseNameValidators.validate_date(month)
  v = month.strftime('%Y%m')
  return v if additional.empty?
  "#{v}_#{additional}"
end
to_yyyymm_list(month, count: 3, additional: '') click to toggle source

Get month-base formated name list. if additional is empty, return month YYYYMM. if additional is not empty, return month YYYYMM_additional.

@example only month

DateBaseName.new.to_yyyymm_list(Date.new(2014,10), count: 4))
=> ["201410","201411","20141","201501"]

@example only month (omit count. default = 3)

DateBaseName.new.to_yyyymm_list(Date.new(2014,10)))
=> ["201410","201411","20141"]

@example month with additional text

DateBaseName.new.to_yyyymm_list(Date.new(2014,9,9), count: 4, additional: 'hoge')
=> ["201410_hoge","201411_hoge","20141_hoge","201501_hoge"]

@param [Date,DateTime] month month @param [Fixnum] count month count. default = 3. @param [String] additional additional text.

If you want to get only month, you can omit this option.

@return [Array(String)] month-based formated names

# File lib/date_base_name.rb, line 95
def self.to_yyyymm_list(month, count: 3, additional: '')
  DateBaseNameValidators.validate_date(month)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyymm(month >> i, additional: additional)
  end
end
to_yyyymmdd(date, additional: '') click to toggle source

Get date-base formated name. if additional is empty, return date YYYYMMDD. if additional is not empty, return date YYYYMMDD_additional.

@example only date

DateBaseName.new.to_yyyymmdd(Date.new(2014,9,9)) #=> "20140909"

@example date with additional text

DateBaseName.new.to_yyyymmdd(Date.new(2014,9,9), additional: 'hoge') #=> "20140909_hoge"

@param [Date,DateTime] date target date @param [String] additional additional text.

If you want to get only date, you can omit this option.

@return [String] date-based formated name

# File lib/date_base_name.rb, line 22
def self.to_yyyymmdd(date, additional: '')
  DateBaseNameValidators.validate_date(date)
  v = date.strftime('%Y%m%d')
  return v if additional.empty?
  "#{v}_#{additional}"
end
to_yyyymmdd_list(day, count: nil, additional: '') click to toggle source

Get date-base formated name list. if additional is empty, return date YYYYMMDD. if additional is not empty, return date YYYYMMDD_additional.

@example only date

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9), Date.new(2014,9,12))
=> ["20140909","20140910","20140911","20140912"]

@example date with additional text

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9), count: Date.new(2014,9,12), additional: 'hoge')
=> ["20140909_hoge", "20140910_hoge", "20140911_hoge", "20140912_hoge"]

@example range

DateBaseName.new.to_yyyymmdd_list(Date.new(2014,9,9)..Date.new(2014,9,12), additional: 'hoge')
=> ["20140909_hoge", "20140910_hoge", "20140911_hoge", "20140912_hoge"]

@param [Date,DateTime,Range] day date or from-count range @param [Date] count count date. @param [String] additional additional text.

If you want count get only date, you can omit this option.

@return [Array(String)] date-based formated names

# File lib/date_base_name.rb, line 48
def self.to_yyyymmdd_list(day, count: nil, additional: '')
  DateBaseNameValidators.validate_date(day)
  count.times.with_object([]) do |i, memo|
    memo << to_yyyymmdd(day + i, additional: additional)
  end
end