2010-06-22 5 views
1

J'essaie de créer un flux qui inclut les données Twitter + mon application, mais j'ai du mal à les trier car leurs horodatages sont formatés de différentes manières. Ceci est mon code:Comment convertir une date sous la forme d'une chaîne en 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" 

Toute aide serait grandement appréciée.

+0

Quel est le problème que vous rencontrez? ne trient-ils pas correctement en raison du format de chaîne pour chaque type de classe est différent? Ou est votre problème que vous ne pouvez pas les faire imprimer dans le même format? – DJTripleThreat

+0

ils ne s'impriment pas dans le même format et ne peuvent donc pas être triés ensemble: created_at @feed = (réponses + tweets) .sort_by (&: created_at) – user250181

Répondre

2

Je ne sais pas si cela est la meilleure façon, mais essayez ceci:

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

Modifier

inverse:

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

génial. cela fonctionne, j'ai juste besoin de jeter le tri à l'envers. Savez-vous comment faire cela? – user250181

+0

J'ai modifié ma réponse:] –

+0

Génial. merci J. – user250181

Questions connexes