Se ho d = DateTime.now
, come posso convertire "d" in UTC (con la data appropriata)?Come posso convertire DateTime.now in UTC in Ruby?
risposta
d = DateTime.now.utc
Oops!
che sembra funzionare in Rails, ma non vaniglia di Ruby (e, naturalmente, questo è ciò che la questione sta chiedendo)
d = Time.now.utc
funziona comunque.
C'è qualche motivo per cui è necessario utilizzare DateTime
e non Time
? Time
dovrebbe includere tutto ciò che serve:
irb(main):016:0> Time.now
=> Thu Apr 16 12:40:44 +0100 2009
In IRB:
>>d = DateTime.now
=> #<DateTime: 11783702280454271/4800000000,5/12,2299161>
>> "#{d.hour.to_i - d.zone.to_i}:#{d.min}:#{d.sec}"
=> "11:16:41"
convertirà il tempo per l'UTC. Ma come pubblicato se è solo tempo è possibile utilizzare:
Time.now.utc
e farlo subito.
DateTime.now.new_offset(0)
funzionerà in Ruby standard (ovvero senza ActiveSupport).
Sfortunatamente, la classe DateTime non ha i metodi di convenienza disponibili nella classe Time per farlo. È possibile convertire qualsiasi oggetto DateTime in UTC in questo modo:
d = DateTime.now
d.new_offset(Rational(0, 24))
È possibile tornare da UTC a localtime usando:
d.new_offset(DateTime.now.offset)
dove d
è un oggetto DateTime nel tempo UTC. Se vuoi questi come metodi di convenienza, quindi è possibile crearli in questo modo:
class DateTime
def localtime
new_offset(DateTime.now.offset)
end
def utc
new_offset(Rational(0, 24))
end
end
si può vedere questo in azione nella sessione seguente IRB:
d = DateTime.now.new_offset(Rational(-4, 24))
=> #<DateTime: 106105391484260677/43200000000,-1/6,2299161>
1.8.7 :185 > d.to_s
=> "2012-08-03T15:42:48-04:00"
1.8.7 :186 > d.localtime.to_s
=> "2012-08-03T12:42:48-07:00"
1.8.7 :187 > d.utc.to_s
=> "2012-08-03T19:42:48+00:00"
Come potete vedere sopra, l'oggetto DateTime iniziale ha un offset -04: 00 (Eastern Time). Sono in Pacific Time con un offset di -07: 00. Chiamando localtime
come descritto in precedenza, converte correttamente l'oggetto DateTime in ora locale. Chiamando utc
sull'oggetto lo converte correttamente in un offset UTC.
La rappresentazione di stringa di un DateTime può essere analizzata dalla classe Time.
> Time.parse(DateTime.now.to_s).utc
=> 2015-10-06 14:53:51 UTC
è possibile impostare un'ENV se volete che il vostro Time.now
e DateTime.now
di rispondere in tempo UTC.
require 'date'
Time.now #=> 2015-11-30 11:37:14 -0800
DateTime.now.to_s #=> "2015-11-30T11:37:25-08:00"
ENV['TZ'] = 'UTC'
Time.now #=> 2015-11-30 19:37:38 +0000
DateTime.now.to_s #=> "2015-11-30T19:37:36+00:00"
Prova questo, funziona in Ruby:
DateTime.now.to_time.utc
- 1. Come posso convertire un oggetto datetime Python in UTC?
- 2. Ottieni offset UTC in Ruby
- 3. Come convertire l'ora locale in UTC?
- 4. Come convertire datetime.date.today() in ora UTC?
- 5. In Ruby o Rails, qual è il modo migliore per convertire Eastern Time in UTC?
- 6. Javascript per convertire UTC in ora locale
- 7. necessario convertire UTC (aws ec2) in PST in python
- 8. Convertire UTC risale dell'ora locale in PHP
- 9. Rails: convertire UTC DateTime in un altro fuso orario
- 10. Convertire DateTime String a UTC in rotaie
- 11. Come convertire da UTC in ora locale in moment.js?
- 12. Joda Time: Convertire UTC in locale
- 13. Come convertire la data UTC + 0 in data PST?
- 14. quando fallisce `datetime.now (pytz_timezone)`
- 15. Javascript Data Convertire a UTC
- 16. Come posso determinare un fuso orario in base all'offset UTC?
- 17. Rails DateTime.now senza tempo
- 18. Convertire UTC DateTime a DateTimeOffset
- 19. Convertire Ruby Hash in YAML
- 20. Come posso convertire l'output di data unix su più fusi orari su UTC, in Perl?
- 21. Converti ora locale in UTC in Rails
- 22. Ruby: Come convertire una stringa in booleana
- 23. Ruby/Rails - Come convertire secondi in tempo?
- 24. ruby: come convertire hash in una matrice
- 25. Python: Converti time-tuple UTC in formato ora UTC
- 26. Datetime.now come valore TimeSpan?
- 27. Converti OffsetDateTime in UTC Timestamp
- 28. Come posso testare l'uguaglianza XML in Ruby?
- 29. Come convertire una stringa in UTF8 in Ruby
- 30. Scostamento UTC in minuti
Perché voglio la data corretta per la conversione, vale a dire, per GMT +10 possono essere davanti il giorno dopo ... – Ash
tempo lo farà per te bene. Il tempo include anche la parte della data, non solo l'ora del giorno. Time.now.inspect per dare un'occhiata. – DanSingerman
Oh dolce. Allora, qual è la differenza tra Data, Ora e Data e ora? – Ash