【问题标题】:issues with date conversion, using rails 3.0.7 and ruby 1.9.2日期转换问题,使用 rails 3.0.7 和 ruby​​ 1.9.2
【发布时间】:2011-09-18 00:57:43
【问题描述】:

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

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

为了验证我是否做对了,我编写了以下 ruby​​ 程序:

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

这工作得很好。但是当我在我的 rails 控制器中尝试同样的事情时,它给出了无效的日期错误。

请帮忙。

【问题讨论】:

  • 它是一个模型表单,其中 :abc 是表单对象,date 是表单中的日期字段(jquery datepicker)
  • params[:abc][:date] 保存从 datepicker 中选择的日期值。例如,如果我选择今天的日期(2011 年 6 月 21 日),params[:abc][:date] 将包含字符串“06/21/2011”。我尝试从控制器打印此日期值并注意到两件事。当我执行puts params[:abc][:date] 并且该值实际存储在表 abc 中时,它会打印正确的值,它是空白的。

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


【解决方案1】:

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

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

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

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

所以也许您遇到了语言环境问题。您的脚本可能正在使用您的标准语言环境设置(根据日期格式判断,这可能是某些美国语言环境),但您的服务器可能正在使用其他设置。

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

dateFormat: 'yy-mm-dd'

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

【讨论】:

  • @rrb:抱歉耽搁了,我早该想到“格式和语言环境”的问题。但是,嘿,固定是固定的,现在你可以做更多有趣的事情。您最好在内部(始终)使用 ISO 日期格式,并仅在边缘将该格式转换为其他格式。
  • 迟到总比没有好:),谢谢!嘿,你能看看stackoverflow.com/questions/6443751/…我在heroku、回形针和amazon s3上有一些问题
  • 将日期选择器的格式更改为非模棱两可的格式实际上对我来说是最好的主意,而不是尝试转换日期,这很痛苦......谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 2011-06-09
相关资源
最近更新 更多