2016-05-03 10 views
0

ich in meinem ApplicationRails, wie automatisch eine Zeit für den Benutzer Zeitzone konvertieren

around_filter :user_time_zone, :if => :current_user 

def user_time_zone(&block) 
    Time.use_zone(current_user.time_zone, &block) 
end 

und der Server speichert die Zeiten, als UTC die Zeitzone für die Benutzer festlegen und created_at Felder erhalten entsprechend der aktualisierten Benutzerzeitzone Aber wenn ich eine Postgres Timerange verwenden, die Zeit in den Bereich Displays als UTC:

#<TimeEntry:0x007fb7c8701a20 
    id: "5556cb4f-862f-4f7d-bb30-743578ba5741", 
    time: 2016-05-03 21:02:28 UTC..2016-05-04 02:02:33 UTC, 
    created_at: Tue, 03 May 2016 16:32:33 VET -04:30, 
    updated_at: Tue, 03 May 2016 16:32:52 VET -04:30> 

Ich baue die Timerange wie folgt aus:

def self.build_timerange(start_time_ms, end_time_ms) 
    start_time = Time.zone.at(start_time_ms.to_f/1000) 
    end_time = Time.zone.at(end_time_ms.to_f/1000) 

    start_time..end_time 
end 

Ich brauche sie von der bekommen Browser als ms.

Ich möchte die time Bereich auf die aktuelle Anfrage Zeitzone (der Benutzer Zeitzone) aktualisieren, ist es möglich?

+0

Ich habe lokale Zeit benutze zu mit solchen Dingen umgehen. https://github.com/basecamp/local_time Alles wird in UTC in der Datenbank gespeichert und dann wandle ich alles, was der Benutzer in UTC eingibt, mit JavaScript, wenn sie einen Bereich auswählen. Ich kann meinen Code posten, wenn Sie denken, dass er hilfreich wäre. Es ist nicht die genaue Lösung für Ihr Problem obwohl – Doon

+0

Interessant, obwohl ich einen serverseitigen Ansatz verwenden, weil Benutzer ihre Zeitzone ändern können –

Antwort

1

config/application.rb

config.time_zone = 'Moscow' # set default time zone to "Moscow" (UTC +4) 

Sie können hier Ihre wenn die Zeitzone verwenden ... Anwendung wird auf Definierte Zeitzone arbeiten

+0

Ich habe vergessen zu erwähnen, dass ich dies bereits getan habe, speichert meine App die Daten mit einer Standardzeitzone von 'UTC'. Mein Problem ist das Konvertieren dieser Daten ** im Zeitbereich ** in die Benutzerzeitzone, die in der Datenbank gespeichert ist. –

Verwandte Themen