Si tengo d = DateTime.now
, ¿cómo convierto 'd' en UTC (con la fecha apropiada)?¿Cómo convierto DateTime.now a UTC en Ruby?
Respuesta
d = DateTime.now.utc
Ups!
que parece funcionar en los carriles, pero no de vainilla Ruby (y, por supuesto, eso es lo que pide la pregunta)
d = Time.now.utc
¿Funciona sin embargo.
¿Hay alguna razón por la que necesite usar DateTime
y no Time
? Time
debe incluir todo lo necesario:
irb(main):016:0> Time.now
=> Thu Apr 16 12:40:44 +0100 2009
En 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á el momento de la UTC. Pero tal como se publicó en el momento, puede utilizar:
Time.now.utc
y obtenerlo de inmediato.
DateTime.now.new_offset(0)
funcionarán en Ruby estándar (es decir, sin ActiveSupport).
Desafortunadamente, la clase DateTime no tiene los métodos de conveniencia disponibles en la clase de tiempo para hacer esto. Puede convertir cualquier objeto DateTime en UTC así:
d = DateTime.now
d.new_offset(Rational(0, 24))
Puede volver a la UTC a la hora local usando:
d.new_offset(DateTime.now.offset)
donde d
es un objeto DateTime en hora UTC. Si desea que estos métodos de conveniencia, a continuación, los puede crear de esta manera:
class DateTime
def localtime
new_offset(DateTime.now.offset)
end
def utc
new_offset(Rational(0, 24))
end
end
se puede ver esto en acción en el siguiente sesión de 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"
Como se puede ver arriba, el objeto DateTime inicial tiene un desplazamiento de -04: 00 (hora del este). Estoy en Pacific Time con una compensación de -07: 00. Llamar al localtime
como se describió anteriormente convierte adecuadamente el objeto DateTime a la hora local. Llamar al utc
en el objeto lo convierte adecuadamente en un desplazamiento UTC.
La clase de tiempo puede analizar la representación de cadena de un DateTime.
> Time.parse(DateTime.now.to_s).utc
=> 2015-10-06 14:53:51 UTC
Se puede establecer una ENV si desea que su Time.now
DateTime.now
y responder en tiempo 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"
Prueba de esto, trabaja en Rubí:
DateTime.now.to_time.utc
- 1. ¿Cómo convierto un hash Ruby a XML?
- 2. DateTime.Now frente a DateTime.UtcNow
- 3. Rieles DateTime.now without Time
- 4. Convertir DateTime.Now a Segundos
- 5. Rieles: convierte UTC DateTime a otra zona horaria
- 6. ¿Cómo convierto HH de Paypal: MM: SS DD Mmm (.) YYYY PST/PDT a C# UTC DateTime?
- 7. Convertir UTC DateTime a otra zona horaria
- 8. Convertir hora local a UTC en Rails
- 9. ¿Cómo convierto System.Windows.Media.SolidcolorBrush a System.Drawing.Color?
- 10. ¿Cómo convierto Double [] a double []?
- 11. Cómo convierto jstring a wchar_t *
- 12. Convertir a UTC Timestamp
- 13. ¿Cómo convierto milisegundos a TDateTime?
- 14. Cómo simular DateTime.Now en pruebas unitarias?
- 15. ¿Cómo convierto BLOB a VARCHAR en MySQL?
- 16. ¿Cómo convierto hexadecimal a decimal en Python?
- 17. ¿Cómo convierto YAML a XML en Perl?
- 18. ¿Cómo convierto Twips a Pixels en .NET?
- 19. ¿Cómo convierto byte [] a stream en C#?
- 20. ¿Fecha.today en UTC?
- 21. Enlace a DateTime.Now. Modificar el valor
- 22. ¿Cómo convierto un bloque a un proceso en una extensión Ruby 1.9 C?
- 23. Anomalía Datetime.now() - Python
- 24. DateTime.Now está lanzando una excepción
- 25. Cadena de fecha/hora UTC a la zona horaria
- 26. necesito convertir UTC (aws ec2) a PST en python
- 27. Convertir DateTime a UTC sólo si no está ya Utc
- 28. Convierte un QDateTime en UTC a hora local del sistema
- 29. convierto HashBytes a VARCHAR
- 30. C# DateTime.Now precisión
Porque quiero la fecha correcta para la conversión, es decir, para el GMT 10 puede estar a la cabeza al día siguiente ... – Ash
tiempo hará que para ti bien El tiempo también incluye la parte de la fecha, no solo la hora del día. Haga Time.now.inspect para echar un vistazo. – DanSingerman
Oh dulce. Entonces, ¿cuál es la diferencia entre Date, Time y DateTime? – Ash