Ruby 将日期转换为字符串而不应用减法
我正在尝试用Ruby将2015-08-02转换为“2015-08-2”。如果我这样做:Ruby 将日期转换为字符串而不应用减法,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我正在尝试用Ruby将2015-08-02转换为“2015-08-2”。如果我这样做: (2015-08-02).to_s => SyntaxError: (irb):21: Invalid octal digit 2015-08-02.to_s => SyntaxError: (irb):21: Invalid octal digit 调解: require 'date' date = Date.parse('2015-08-02') # => #<Date: 2
(2015-08-02).to_s => SyntaxError: (irb):21: Invalid octal digit
2015-08-02.to_s => SyntaxError: (irb):21: Invalid octal digit
调解:
require 'date'
date = Date.parse('2015-08-02') # => #<Date: 2015-08-02 ((2457237j,0s,0n),+0s,2299161j)>
date
可以使用返回字符串,该字符串有多种表示日期各个部分的方法。在这种情况下,你不想要零填充的一天。Ruby支持使用%e
,这是一个充满空间的日子,但是你有空间来处理:
date.strftime('%Y-%m-%e').delete(' ') # => "2015-08-2"
日期不是用
2015-08-02
表示的。它可以以字符串开头:“2015-08-02”
,然后被解析为字符串。我强烈建议阅读时间和日期/日期时间文档。2015-08-02
不是有效的日期文字。不确定您试图实现什么?看看这个问题,这就是我试图解决的问题:如何从用户那里收集输入以获得FixNum?不确定您的另一个SO问题是是否有任何明确的问题。我正在使用表单\u作为f.date\u字段。我应该要回一个字符串,但我要回一个fixnum。问题是用户选择了一个日期,在输入表单中我有2015年2月8日,但在电子邮件中我仍然得到2015年8月2日。客户需要获得第一种格式,因为他有另一个应用程序可以解析他收到的电子邮件中的日期。谢谢Tin Man。我知道做Date.parse(“2015-08-02”).strftime(“%m/%d/%Y”)=>“08/02/2015”。问题是我收到的是2015-08-02作为一个FixNum。您可以编写date.strftime(“%Y-%m-%d”)#=>“2015-08-2”
或date.strftime(“%Y-%m-%e”)#=>“2015-08-2”
。这使用的是的-
标志(“不要填充数字输出”)。捕捉得好!我当时在想,但后来说“不,这只适用于格式化字符串,而没有研究有关strftime
的秘密。
date.strftime('%Y-%m-%e').delete(' ') # => "2015-08-2"