2010-06-22 62 views
1

我正尝试创建一个包含Twitter数据+我的应用程序的流,但由于它们的时间戳以不同的方式进行了格式化,所以我在排序时遇到了麻烦。这是我的代码:如何将日期以字符串的形式转换为ActiveSupport :: TimeWithZone?

answers = Answer.find(:all, :conditions => {:user_id => @user_id }, :limit => 20) 
tweets = Twitter::Search.new(params[:username]).to_a 

@feed = (answers + tweets).sort_by(&:created_at) 

these are the formats on time: 

<#Hashie::Mash created_at="Tue, 22 Jun 2010 04:41:23 +0000"... 
<Answer id:... created_at: "2010-06-15 02:13:40" 

任何帮助将不胜感激。

+0

请告诉我问题,你有?他们是不是正确排序,因为每种类型的字符串格式都不一样?或者你的问题是你无法让他们以相同的格式打印出来? – DJTripleThreat 2010-06-22 19:05:11

+0

他们不打印出相同的格式,因此不能通过一起排序:created_at @feed =(answers + tweets).sort_by(&:created_at) – user250181 2010-06-22 19:08:11

回答

2

我不知道这是不是最好的办法,但试试这个:

@feed = (answers + tweets).sort_by{ |x| DateTime.parse("#{x.created_at}") } 

编辑

反向:

@feed = (answers + tweets).sort{ |x, y| DateTime.parse("#{y.created_at}") <=> DateTime.parse("#{x.created_at}") } 
+0

真棒。这工作我只需要抛出排序反向。你知道怎么做吗? – user250181 2010-06-22 20:17:15

+0

我编辑了我的答案:] – 2010-06-22 20:25:44

+0

太棒了。谢谢J. – user250181 2010-06-22 20:36:07