2016-04-26 50 views
-1

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

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

我想要的,例如,获得输出索引从零开始个月(一月是0个月,月是第11个月):

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

注:不会改变time

+1

你说的算术运算符是什么意思?你的意思是减去'-'吗?或者你的意思是'strftime'? – sawa

+0

我的意思是'''里面'strftime',或类似的方法 – Ilya

回答

1

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

你不能这样做strftime。用插值或字符串格式来做。

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

你可以很容易地纳入年:''%d%02d“%[time.year,time.month - 1]' – Stefan

+0

@Stefan是的,你是对的。 OP在我回答后改变了这个问题。 – sawa

1

strftime不允许你做这样的算术作为参数,但你可以单独yearmonth,上月和CONCAT执行您所需的操作为字符串。

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

OR

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

不要混合字符串连接和插值,选择一个或另一个。 – Stefan

+0

@Stefan:我混合只是因为显示所需的输出 –