将Twitter发布日期转换为rails中的datetime

Jos*_*osh 0 ruby-on-rails

我试图将twitter发布日期转换为datetime对象,但由于某种原因它们没有正确转换.如果我这样做:

d = '12:06 AM Oct 15th'
Run Code Online (Sandbox Code Playgroud)

d = DateTime.parse(d)
Run Code Online (Sandbox Code Playgroud)

要么

Tweet.new :body => "test", :created_at => d
Run Code Online (Sandbox Code Playgroud)

然后日期结束于11月15日星期日00:06:00-0500 2009.所有日期都在转换并包含11月.我完全错过了什么吗?

mty*_*aka 5

DateTime.parse期望传入的字符串是标准格式.由于您的字符串不是这种情况,因此您必须使用DateTime.strptime并传递日期/时间的字符串表示以及相应的格式字符串.在你的情况下,这样的东西应该工作:

d = DateTime.strptime '12:06 AM Oct 15th', '%H:%M %p %b %d'

d.to_s  # => "2009-10-15T00:06:00+00:00"
Run Code Online (Sandbox Code Playgroud)

您可以查看文档以了解每个格式化方向的含义.