Ruby strftime - 显示季度 + 年份



我想用季度和年份格式化日期,例如

2018年第一季度

有没有办法使用 strftime 或 I18n.l 来做到这一点?我在文档中看不到任何 RE 季度。

我一直在做

month = datum.recorded_at.month - 1
quarter = (month / 3) + 1
"Q#{quarter} #{datum.recorded_at.strftime('%y')}"

但这不是一个好方法,因为它不容易本地化(例如,我们的一些白标合作伙伴可能希望以不同的方式格式化日期,而不是使用季度)

听起来您已经知道如何计算季度,但您不确定如何组织代码以允许灵活的格式设置,而无需硬编码使用季度的特定格式。

您需要的是让strftime有一个季度的"格式指令"(例如%q)

您可以重写strftime以添加新指令,但通常最好避免覆盖此类内容。

相反,我建议定义您自己的格式化模块,该模块可以理解其他所有内容的%q和搭载strftime

module MyDateFormatter
def self.format_date(date, format)
quarter = get_quarter(date)
date.strftime(format.gsub("%q", "Q#{quarter}"))
end
def self.get_quarter(date)
# Put whatever quarter calculation you want to use here
end
end

想要使用季度的客户端可以具有包含特殊%q指令的格式字符串,而不需要使用季度的客户端可以具有不使用%q的格式字符串。

相关内容

  • 没有找到相关文章

最新更新