Come posso ottenere un oggetto Tempo rubino che rappresenta l'inizio del giorno in una data specifica in un determinato fuso orario.Ottiene l'oggetto orario all'inizio del giorno in un fuso orario particolare
risposta
ho finito con il metodo #local
sulla ActiveSupport::TimeZone
oggetto p Assing componenti dell'oggetto Date
.
# Get example date and time zone...
date = Date.today
timezone = ActiveSupport::TimeZone['America/New_York']
# Get beginning of day for date in timezone
timezone.local(date.year, date.month, date.day)
date = Date.today
date.to_time.in_time_zone('America/New_York').beginning_of_day
Attualmente uscite => 2011-11-02 00:00:00 -0400
Time.now.in_time_zone('Asia/Shanghai').beginning_of_day
Attualmente uscite => 2011-11-03 00:00:00 +0800
date = Date.today
date.to_time.in_time_zone('Asia/Shanghai').beginning_of_day
Attualmente uscite => 2011-11-02 00:00:00 +0800
Vorrei che fosse così semplice. Sfortunatamente, non vi è alcuna garanzia che l'orario di arrivo, dopo la conversione del fuso orario, sia nello stesso giorno. A volte lo sarà ea volte non dipenderà dalla zona iniziale e finale. Suppongo che potrei confrontare il componente della data dopo la conversione con il valore originale e aggiustarlo se necessario, ma è davvero goffo. Quello che mi piacerebbe è un modo elegante per farlo che funziona sempre. Spero che ci sia qualcosa nell'api, non penso che sia una cosa pazza da voler fare. –
Potrei non capire completamente cosa stai cercando di fare ma 'date.to_time.in_time_zone ('TIMEZONE'). Beginning_of_day' ti da 00:00:00 UTC per la data specificata originale. –
Non ti dà 0 UTC, ti dà 0 nel fuso orario, che è preferibile. Ma non lo fa prima di convertire i fusi orari con in_time_zone, quindi la data non è necessariamente più valida. Ecco un esempio di ciò che intendo. 'date.to_time.in_time_zone ('Asia/Shanghai'). midnight.in_time_zone (Time.zone) .midnight # => Un giorno nel passato. Idealmente, il rubino dovrebbe permettermi di fare qualcosa del genere. 'Date.to_time (zona)'. –
Non sono sicuro se questo aiuta, ma questo mi ottiene il momento in cui le mie quote API di Google ripristinati:
# The most recent midnight in California in UTC time
def last_california_midnight
(Time.now.utc - 7.hours).midnight + 7.hours
end
Io lo uso come questo con Mongoid, ad esempio:
def api_calls_today
Call.where(updated_at: { '$gte' => last_california_midnight }).count
end
Questo funzionerà indipendentemente dal fuso orario in cui viene distribuito il codice, a condizione che Mongo sia impostato su UTC.
- 1. Converti oggetto datetime in un particolare fuso orario in epoca secondi in quel fuso orario
- 2. Ottiene il fuso orario con React Native
- 3. Cambia fuso orario del browser
- 4. Convertire fuso orario locale a PST fuso orario in C#
- 5. NSDate - Compensazione del fuso orario
- 6. Django: emissione del fuso orario
- 7. Twitter - Fuso orario del Tweeet
- 8. Ottiene l'offset del fuso orario per una data posizione
- 9. conversione fuso orario Silverlight
- 10. fuso orario russo cambia
- 11. git commit fuso orario
- 12. regolare il fuso orario
- 13. javascript Data fuso orario
- 14. H2 predefinito fuso orario
- 15. Fuso orario con PostgreSQL
- 16. Impostazione del fuso orario in modalità org
- 17. Conversione del fuso orario in php
- 18. Modifica del fuso orario in MSYS
- 19. impostazione del fuso orario in Python
- 20. Python Fuso orario conversione
- 21. Fuso orario per Firebase.ServerValue.TIMESTAMP
- 22. Java GregorianCalendar Fuso orario
- 23. strptime con fuso orario
- 24. ottenere fuso orario dell'utente
- 25. Ottenere Fuso orario in Android
- 26. fuso orario locale in Ruby
- 27. Come ottenere il fuso orario locale dell'utente diverso dal fuso orario del server (UTC) in python?
- 28. Come si ottiene lo scostamento UTC corrente (fuso orario)?
- 29. Come convertire la data da un fuso orario a un altro fuso orario
- 30. Come ottenere il fuso orario del cliente?
Solo un commento in quanto non so nulla sulla gestione del fuso orario di Ruby: la mezzanotte non esiste sempre e potrebbe verificarsi due volte. Il Brasile cambia i suoi orologi a mezzanotte, per esempio. Probabilmente dovresti trovare l'inizio della giornata, invece. –
Punto interessante. Per i miei scopi l'inizio della giornata è quello che mi interessa. Grazie Jon. Aggiornerò la domanda –
Qual è il tuo caso di utilizzo effettivo? (Ho trovato questa domanda perché volevo ottenere la mezzanotte più recente in California, come UTC, per il monitoraggio delle quote API.) –