MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak przekonwertować datę na UTC w MongoMapper i Ruby/Rails?

Otrzymałem tę odpowiedź od grupy Seattle Brigade -

===

Nie widziałem start_date zdefiniowanej w twoim kodzie jako klucz w MongoMapper, więc założę, że tworzysz własny obiekt daty, albo bezpośrednio przez Ruby, albo opakowany przez Rails. O ile mi wiadomo i ktoś mnie poprawi, daty Mongostores to czas UTC w milisekundach od epoki. Więc kiedy definiujesz akey za pomocą mapowania :date w MongoMapper, zawijasz obiekt Time w Ruby.

Dlatego jeśli chcesz przechowywać datę w Mongo, a nie została ona stworzona przez MongoMapper, upewnij się, że tworzysz obiekt Time w UTC. MongoMapper zawiera metodę dodawania Date o nazwie to_mongo, której możesz użyć.

>> Time.now.utc
=> Fri Jan 28 03:47:50 UTC 2011
>> require 'date'
=> true
>> date = Date.today
=> #<Date: 4911179/2,0,2299161>
>> Time.utc(date.year, date.month, date.day)
=> Thu Jan 27 00:00:00 UTC 2011
>> require 'rubygems'
=> true
>> require 'mongo_mapper'
=> true
>> Date.to_mongo(date)
=> Thu Jan 27 00:00:00 UTC 2011

Ale uważaj na zmianę czasu.

>> Date.to_mongo(Time.now)
=> Thu Jan 27 00:00:00 UTC 2011
>> Date.to_mongo(Time.now.utc)
=> Fri Jan 28 00:00:00 UTC 2011

Powodzenia.

===

I za pomocą

Date.to_mongo(start_date) 

to działa dla mnie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Testowanie integracji Spring Boot z wbudowaną bazą danych MongoDB

  2. Najlepsze praktyki dotyczące uruchamiania MongoDB w klastrze

  3. MongoDB/Mongoose ograniczenie unikatowości w polu Data

  4. zbuduj API do strumieniowego przesyłania audio/wideo z GridFS mongodb

  5. błąd:parametr typu `D` musi być użyty jako parametr typu dla niektórych typów lokalnych