3

今天用我的 ruby​​ 控制台得到了这个:

$ irb
2.3.1 :001 > require 'date'
 => true 
2.3.1 :002 > Date.parse '30/08/2016'
 => #<Date: 2016-08-30 ((2457631j,0s,0n),+0s,2299161j)> 
2.3.1 :003 > Date.parse '30 08 2016'
 => #<Date: 2016-09-30 ((2457662j,0s,0n),+0s,2299161j)> 
2.3.1 :004 > 

用空格分隔(日期在工作的电子表格上像这样格式化......不要问为什么......呵呵),它给了我一个月后的日期!

我错过了什么?或者我不应该期待一个正确的日期,因为我传递的格式无效?

4

1 回答 1

2

改为使用Date.strptime,它可以使用模板来解析输入

IE

Date.strptime('30 08 2016', '%d %m %Y')
=> #<Date: 2016-08-30 ((2457631j,0s,0n),+0s,2299161j)>

只是重复我的评论,它看起来像Date.parse忽略第一个空格后的输入,只使用当前月份和年份。

Date.parse '01 01 2015'
=> #<Date: 2016-10-01 ((2457663j,0s,0n),+0s,2299161j)>

有趣的是,如果你拼写月份,空格就可以了。

 Date.parse '01 jan 2015' 
 => #<Date: 2015-01-01 ((2457024j,0s,0n),+0s,2299161j)>
于 2016-09-30T22:55:31.627 回答