Dienstag, Februar 18, 2020

Ist es möglich, ändern Sie die Standard-Zeitzone in MongoDB mit Rails 3?

Habe ich dieses Problem: wenn ich erstellen-Objekt und setzen datetime-Es ist das speichern der Datenbank in UTC-Zeitzone. Hier ist ein Beispiel:

//showing full list of object properties 
 Grant _id: 5108ee29e6b564611400000, start_date: 2013-01-30 09:56:27 UTC
 //then showing a.start_date
 Wed, 30 Jan 2013 13:56:27 +0400 

Habe ich versucht zu verbieten Datenbank in UTC-Zeit. Hier ist mongoid.yml:

development:
  options:
    raise_not_found_error: false
  sessions:
    default:
      use_activesupport_time_zone: true
      use_utc: false
      database: test_mongoid_production
      hosts:
        - localhost:27017
      options:
        consistency: :strong

und in der Anwendung.rb:

config.time_zone = 'Moscow'

aber es funktioniert nicht.

Kann jemand helfen mit diesem Problem ?

InformationsquelleAutor skrypalyk | 2013-01-30

2 Kommentare

  1. 7

    Ändern können Sie die Zeitzone für Ihre Anwendung so, dass ruby das date-Objekt wird automatisch konfigurieren Sie die Termine. MongoDB wird immer speichern die Uhrzeit in UTC.

    MongoDB hat keine interne Kenntnis von Zeitzonen.

    • danke. Noch eine Frage: ich werde start_date auf dem Formular, um 14-00, aber wenn es spart – es zeigt mir 10 – 00. Können Sie mir helfen ?
    • So lange, wie Sie Ihre Anwendung stellt Ihre Zeitzone, Ihre Anwendung sollte immer die richtige. Leider gibt es keine wirkliche Möglichkeit, dies zu beheben, im Rahmen des internen Vorführung von MongoDB :(, aber es ist auch gut, denn dann bedeutet es, Sie können viele apps in vielen Zeitzonen und Sie können alle arbeiten aus einer UTC-Datum, so hat es seine Daseins-Berechtigung zu
    • Sie haben Recht, aber Sie sehen es substracts 4 Stunden von der Zeit, was ich eingestellt habe, und dann zeigen mir, dass dies die Rechte Zeit ist in Zeitzone +4. Ich kann nicht das bekommen, was ich tun sollte, als mit dieser!
    • Hängen was möchten Sie tun wit? Sie kennen Ihre Anwendung zeigt, dass es richtig als Sie zeigten, wie im Beispiel oben rechts? Und Sie wissen, MongoDB nicht UTC-Zeit? Ich würde sagen, einfach stellen Sie sicher, dass Ihre app hat die richtige Zeitzone, hilft das?
    • Ich zeigte schlechtes Beispiel. Es ist ok, in der Konsole, aber wenn ich es mit Formen – es zeigt falsche Zeit. Zum Beispiel ich erstelle Objekt mit Stern-Zeit-jetzt – es substracts 4 Stunden und die zeigen, dass es meine localtime, aber es ist nicht meine Zeit.
    • Aha ich bekomme Sie nun, die Anwendung nicht zeigen, dass Sie es in Ordnung, ich werde umsehen für etwas
    • Es ist nicht speichern Sie es richtig, und ich weiß nicht, warum ?! 2013-01-30 10:37:00 +0400 aber ich habe 14-37 in meine form.
    • es spart es richtig: 2013-01-30 10:37:00 +0400 fügen Sie 4 Stunden auf diese Zeit, und Sie haben Ihre lokale Zeit, ISO-Termine kommen im format von Zulu-Zeit + offset-format, können Sie sagen, dass Ihr Datum ist nicht wirklich zulu-Zeit, weil es nicht das Z am Ende für eine, es ist also ein timezoned date mit einem offset von +4 Stunden.
    • In ruby zeigt es: Wed, 30 Jan 2013 13:56:27 +0400 trotz dem auftragen der tz-offset, einfach weil das offset ist da, aber es wird nicht angewendet, weiter
    • Ich kann dich nicht verstehen – Sie sagen mir, dass alles in Ordnung ? Ich werde kopieren Sie Objekt, dass ich 14-37. Und hier ist die Ausgabe in der Konsole. Titel: „14-37“, description: „14-37“, start_date: 2013-01-30 06:37:00 UTC. So ist es sustracts mal, zwei mal oder was ?
    • Ok, ich denke, wir haben uns vermischt. Lassen Sie uns definieren, was die Datenbank zeigt-und was zeigt die Anwendung, weil es wie 5 oder sechs Termine herumfliegen atm. Ok also: 2013-01-30 10:37:00 +0400 ist, zeigt die Datenbank oder die Anwendung? und 2013-01-30 06:37:00 UTC ist, zeigt die Datenbank oder die Anwendung? Auch im letzten Kommentar, auf den Sie gesetzt 14-37 für die anderen Felder nicht die Zeit.
    • Ein weiteres mal) ich bin erstellen Objekt mit start_date 14-37. Und jetzt sehe ich, dass es spart falsch. Hier ist die Ausgabe aus der Datenbank : start_date: 2013-01-30 06:37:00 UTC In Sicht – es zeigt dies – Wed, 30 Jan 2013 10:37:00 +0400
    • Ok, ja es scheint, wie es ist, so zu arbeiten, wie Sie wollen. Da weiß die Anwendung, dass Ihr mal tatsächlich 4 Stunden vor der UTC (das ist, was die Datenbank WIRD immer store in), ich bin nicht sicher, was Sie gemeint „So ist es sustracts mal, zwei mal oder was ?“, aber ich würde die Zeiten so wie Sie jetzt sind, beim Druck das Datum in der Anwendung alles, was Sie tun möchte, ist das weglassen der offset-Teil des Datums.

  2. 0

    config.time_zone nicht „Zeit-Server“, gesteuert wird, die von Ihrem Betriebssystem normalerweise.

    Schienen immer speichert Ihre Daten in UTC in der Datenbank (es sei denn, Sie ändern eine andere Einstellung).

    • Wie kann ich dies ändern ? Es konvertiert die Daten in UTC und zeigt mir ein Falsches Datum. Zum Beispiel: ich erstelle Startdatum : 14-00 und es zeigt mir 10 – 00

Kostenlose Online-Tests