我在Ruby on Rails中遇到了一个问题。我想将格式字符串转换Tue, 10 Aug 2010 01:20:19 -0400 (EDT)
为日期对象。
无论如何,我可以做到这一点。
这是我所寻找并尝试的以下方法,但是没有运气:
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
- 慢性解析器
- Ruby:将字符串转换为日期
- 使用Ruby从文本解析日期
这个你能帮我吗。
我在Ruby on Rails中遇到了一个问题。我想将格式字符串转换Tue, 10 Aug 2010 01:20:19 -0400 (EDT)
为日期对象。
无论如何,我可以做到这一点。
这是我所寻找并尝试的以下方法,但是没有运气:
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
这个你能帮我吗。
Answers:
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
它似乎有效。
唯一的问题是时区。如果您想在UTC时区设置日期,那么最好使用Time
object,假设我们有以下字符串:
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
我找不到更简单的方法来转换Time
为Date
。
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010
您可以尝试https://rubygems.org/gems/dates_from_string:
在结构中查找日期:
text = "get car from repair 2015-02-02 23:00:10"
dates_from_string = DatesFromString.new
dates_from_string.find_date(text)
=> ["2015-02-02 23:00:10"]