Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将日期转换为字符串而不应用减法_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby 将日期转换为字符串而不应用减法

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

我正在尝试用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: 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"