2010-08-30 44 views

回答

103

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对象,假设我们有串:

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简单的方法。

+0

感谢KLEW和瑞安。这工作像一个魅力。我知道Date.parse,但没有使用它。这对我来说是一个学习。 – dkris 2010-08-30 10:58:15

+1

Ruby 1.9的Time#to_date将时间转换为日期。 – steenslag 2010-08-30 13:58:20

12
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z") 

应该是:在结构上

查找日期:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z') 
5
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" 
str.to_date 
=> Tue, 10 Aug 2010 
+1

这是一个Rails的东西,而不是Ruby的东西,我认为 – 2015-10-13 16:41:50

+0

耶只有rails只有http://apidock.com/rails/String/to_date – 2015-10-31 02:50:11