使用rails 3.0.7和ruby 1.9.2进行日期转换的问题

时间:2011-06-19 04:42:31

标签: ruby ruby-on-rails-3 date jquery-ui-datepicker ruby-1.9.2

我正在使用datepicker在我的表单上插入日期,当然这会将日期作为字符串返回给控制器。 问题是当我尝试将此字符串转换为日期时,我收到错误“无效日期”

Date.parse(params[:abc][:date])

为了验证我是否正确行事,我写了以下ruby程序:

string_date = "06/18/2011"
date = Date.parse(string_date)
puts date

这完全没问题。但是当我在rails控制器中尝试相同的操作时,它会给出无效的日期错误。

请帮忙。

1 个答案:

答案 0 :(得分:6)

当我在Rails 3.1控制台中执行此操作时:

date = Date.parse("06/18/2011")

我收到“ArgumentError:invalid date”异常。但是,它适用于ISO-8601 date

date = Date.parse('2011-06-18')

所以也许你有一个语言环境问题。您的脚本可能正在使用您的标准区域设置(可能是某些美国区域设置根据日期格式判断),但您的服务器可能正在使用其他内容。

尝试通过添加以下内容将jQuery datepicker date format更改为标准且明确的内容:

dateFormat: 'yy-mm-dd'

到datepicker的选项。 datepicker的默认值为'mm/dd/yy',Ruby的Date class似乎不喜欢没有特殊的语言环境设置。