gpt4 book ai didi

ruby - ruby 有没有办法在 4-5-4(零售)日历中找到年初

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:50 33 4
gpt4 key购买 nike

我正在尝试在 Rails 应用程序中为零售销售构建报告。我正在尝试写一个 Gem它可以在 Retail Calendar 中找到零售月份/季度/季节的开始和结束日期

我很难确定年初。

例如:2014 年是从 2 月 2 日开始。2015 年是 2 月 1 日,2016 年是 1 月 31 日。

有没有人在 Ruby 或任何其他语言中遇到过这样的需求。

最佳答案

require 'date'

# Class for 5-4-4, 4-5-4, and 4-4-5 calendars
class Calendar13

def initialize (type = 454, yr_end_mo = 1)
case type
when 544, 454, 445 then @type = type
else raise ArgumentError, "Bad calendar type #{type}"
end
if (1..12) === yr_end_mo then @yr_end_mo = yr_end_mo
else raise ArgumentError, "Bad year-end month #{yr_end_mo}"
end
end

# Return the ending date for a particular year
def end_of_year (year)
year += 1 unless @yr_end_mo == 12
year_end = Date.new year, @yr_end_mo, -1
wday = (year_end.wday + 1) % 7 # Saturday-origin day-of-week
# Advance or retreat to closest Saturday
if wday > 3 then year_end += 7 - wday
elsif wday > 0 then year_end -= wday
end
year_end
end

# Return starting date for a particular year
def start_of_year (year); end_of_year(year - 1) + 1; end

# Return starting date for a particular month
def start_of_month (year, month)
start = start_of_year(year) + ((month - 1) / 3).to_i * 91
case @type * 10 + (month - 1) % 3
when 4451, 4541 then start += 28
when 5441 then start += 35
when 4452 then start += 56
when 4542, 5442 then start += 63
end
start
end

# Return the ending date for a particular month
def end_of_month (year, month)
if month == 12 then end_of_year year
else start_of_month(year, month + 1) - 1
end
end

# Return the starting date for a particular quarter
def start_of_quarter (year, quarter)
start_of_month year, (quarter - 1) * 3 + 1
end

# Return the ending date for a particular quarter
def end_of_quarter (year, quarter)
if quarter == 4 then end_of_year year
else start_of_quarter(year, quarter + 1) - 1
end
end

# Return the number of weeks in a particular year
def weeks_in_year (year)
((start_of_year(year + 1) - start_of_year(year)) / 7).to_i
end

end

另见 http://www.smythretail.com/general-retailing/how-to-set-up-a-4-5-4-calendar/ .

关于ruby - ruby 有没有办法在 4-5-4(零售)日历中找到年初,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531481/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com