Ruby String to Date Conversion

dkr*_*ris 68 ruby datetime ruby-on-rails date

我在Ruby on Rails中遇到了一个问题.我希望将一串格式Tue, 10 Aug 2010 01:20:19 -0400 (EDT)转换为日期对象.

无论如何我能做到这一点.

这是我在下面看到并尝试过的,没有运气:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. 慢性解析器
  3. Ruby:将字符串转换为日期
  4. 使用Ruby从文本解析日期

这个你能帮我吗.

kle*_*lew 129

Date.parse方法有什么问题?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10
Run Code Online (Sandbox Code Playgroud)

它似乎工作.

这里唯一的问题是时区.如果你想要UTC时区的日期,那么最好使用Timeobject,假设我们有字符串:

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09
Run Code Online (Sandbox Code Playgroud)

我找不到转换更简单的方法TimeDate.


ste*_*lag 13

Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
Run Code Online (Sandbox Code Playgroud)

应该:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
Run Code Online (Sandbox Code Playgroud)


Wad*_*ter 8

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010
Run Code Online (Sandbox Code Playgroud)

  • 这是一个Rails的东西,我认为不是Ruby的东西 (5认同)