Ruby on rails 在rails中将twitter发布日期转换为日期时间

Ruby on rails 在rails中将twitter发布日期转换为日期时间,ruby-on-rails,Ruby On Rails,我试图将twitter发布日期转换为datetime对象,但由于某些原因,它们转换不正确。如果我这样做: d = '12:06 AM Oct 15th' 及 或 然后,日期结束于2009年11月15日太阳00:06:00-0500。所有日期都在转换并包含11月份。我完全遗漏了什么吗?DateTime.parse希望传入的字符串采用标准格式。由于字符串不是这样,因此必须使用DateTime.strtime并将日期/时间的字符串表示形式以及相应的格式字符串传递给它。在您的情况下,类似这样的方法应该

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

d = '12:06 AM Oct 15th'


然后,日期结束于2009年11月15日太阳00:06:00-0500。所有日期都在转换并包含11月份。我完全遗漏了什么吗?

DateTime.parse
希望传入的字符串采用标准格式。由于字符串不是这样,因此必须使用
DateTime.strtime
并将日期/时间的字符串表示形式以及相应的格式字符串传递给它。在您的情况下,类似这样的方法应该有效:

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

d.to_s  # => "2009-10-15T00:06:00+00:00"

您可以检查以查看每个格式说明的含义。

DateTime.parse
希望传入的字符串采用标准格式。由于字符串不是这样,因此必须使用
DateTime.strtime
并将日期/时间的字符串表示形式以及相应的格式字符串传递给它。在您的情况下,类似这样的方法应该有效:

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

d.to_s  # => "2009-10-15T00:06:00+00:00"

您可以检查以查看每个格式说明的含义。

您可以稍微弄乱它,然后使用解析器:

s = '12:06 AM Oct 15th'

d = DateTime.parse(s.sub(/(\w\w\w) /, '\1'))

puts d.to_s
# => 2009-10-15T00:06:00+00:00

您可能会稍微弄乱它,然后使用解析器:

s = '12:06 AM Oct 15th'

d = DateTime.parse(s.sub(/(\w\w\w) /, '\1'))

puts d.to_s
# => 2009-10-15T00:06:00+00:00

始终使用慢性宝石。当涉及到日期/时间解析时,将解决您的所有问题:

始终使用慢性gem。将解决日期/时间解析方面的所有问题: