2011-04-12 3 views
3

Voici ma console:Rails question Fuseau horaire

irb(main):048:0> Time.now 
=> 2011-04-13 00:51:50 +0200 
<c => (@stats[5] == '-' ? 0 : @stats[3]), :earn => @stats[6]) 
=> #<Reklamer id: 75, virksomhed: "Orville", dato: "2011-04-13 00:00:00", unik_k 
lik: 0, klik: 0, unik_vis: 0, vis: 0, leads: 0, ordre: 0, earn: 0, created_at: " 
2011-04-12 22:52:13", updated_at: "2011-04-12 22:52:13", cpc: 0> 
irb(main):050:0> 

Comme vous pouvez le voir quand je crée un nouvel élément updated_at et created_at est « 2011-04-12 22:52:13 » au lieu de l'heure : 2011-04-13 00:51:50

Répondre

10
irb(main):048:0> Time.now 
=> 2011-04-13 00:51:50 +0200 
created_at: 2011-04-12 22:52:13 # +0000 

Rails magasins à +0000 fuseau horaire par défaut, alors que votre fuseau horaire actuel est +0200

http://railscasts.com/episodes/106-time-zones-in-rails-2-1

Rubriques connexes:

UPD

Pour comprendre. Si vous définissez config.time_zone = 'Copenhagen', que signifie-t-il?

    temps
  • sera toujours stocké sous forme UTC +0000
  • Si vous cal @ object.created_at (ou tout autre champ de date) il compensera votre temps et retourner votre heure locale.

Exemple (config.time_zone = 'Moscow' # +0400)

object = Object.new 
object.save 
#=> #<Object id: 1, created_at: "2011-04-13 07:46:36", updated_at: "2011-04-13 07:46:36"> 
object.created_at 
#=> Wed, 13 Apr 2011 11:46:36 MSD +04:00 

Pourquoi faut-il stocker temps à UTC +0000? Parce que l'utilisateur peut choisir n'importe quel fuseau horaire local, il sera automatiquement décalé dans le fuseau horaire des utilisateurs.

+0

J'ai essayé d'ajouter config.time_zone = 'UTC +02: 00' à mon environnement.rb mais cela ne fonctionne pas. –

+0

J'ai mis le fuseau horaire à config.time_zone = "Copenhague" mais je reçois toujours le mauvais temps –

+0

J'ai mis à jour ma réponse – fl00r