Cómo obtener la marca de tiempo UTC en Ruby?
¿Cómo obtener la marca de tiempo UTC en Ruby?
8 answers
time = Time.now.getutc
Rationale: En mis ojos una marca de tiempo es exactamente eso: Un punto en el tiempo. Esto se puede representar con precisión con un objeto. Si necesita algo más, un valor escalar, por ejemplo, segundos desde la época de Unix, intervalos de 100-ns desde 1601 o tal vez una cadena para fines de visualización o almacenar la marca de tiempo en una base de datos, puede obtenerlo fácilmente del objeto. Pero eso depende mucho de su uso previsto.
Diciendo que " una marca de tiempo verdadera es el número de segundos Unix epoch " está un poco perdiendo el punto, ya que es una forma de representar un punto en el tiempo, pero también necesita información adicional para saber que se trata de un tiempo y no de un número. Un objeto Time
resuelve este problema muy bien al representar un punto en el tiempo y también ser explícito sobre lo que es.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-06 08:50:07
Podrías usar: Time.now.to_i
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-11 13:47:51
El formato predeterminado no es muy útil, en mi opinión. Prefiero ISO8601 ya que es clasificable, relativamente compacto y ampliamente reconocido:
>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-28 23:15:02
Normalmente la marca de tiempo no tiene zona horaria.
% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-21 06:43:43
¿De qué sirve una marca de tiempo con su granularidad dada en segundos? Me resulta mucho más práctico trabajar con Tiempo.ahora.to_f. Heck, usted puede incluso lanzar un to_s.sub('.',") para deshacerse del punto decimal, o realizar una conversión de tipo como este: Integer(1e6*Tiempo.ahora.to_f).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-16 14:11:50
Time.utc(2010, 05, 17)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-31 11:19:30
time = Time.zone.now()
Funcionará como
irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-02 15:27:45
La forma correcta es hacer un Time.now.getutc.to_i
para obtener la cantidad de marca de tiempo adecuada, ya que simplemente mostrar el entero no siempre es lo mismo que la marca de tiempo utc debido a las diferencias de zona horaria.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-11 10:11:28