使用算术运算符的Ruby日期格式

时间:2016-04-26 12:08:27

标签: ruby

如何使用算术运算符将Ruby DateTime格式化为字符串? 通常情况:

time = Time.now.utc
#=> 2016-04-26 12:00:19 UTC
time.strftime("%Y %m")
#=> "2016 04"

例如,我希望从零开始索引的月份输出(1月是0月,12月是11月):

time.strftime("%Y %(m-1)") # or something similar method
#=> "2016 03" 
or 
#=> "2016 3"

注意:不要更改time

2 个答案:

答案 0 :(得分:1)

注意这是原始问题的答案,而不是问题发生变化后的答案。

您无法使用strftime执行此操作。用插值或字符串格式来做。

"%02d" % (time.month - 1)
# => "03"

答案 1 :(得分:1)

strftime不允许你进行参数算术,但你可以将yearmonth分开,在月份执行所需的操作,并以字符串形式连接。

> time.strftime("%Y ") + "#{time.strftime('%m').to_i - 1}"
#=> "2016 3"
> time.strftime("%Y ") + (time.strftime('%m').to_i - 1).to_s
#=> "2016 3"

> time.year.to_s + " #{time.month - 1}"
#=> "2016 3"