1
votes

Comment comparer l'horodatage Unix à ActiveSupport :: TimeWithZone?

J'ai un entier d'horodatage unix de 1550814673 et je veux le comparer à:

Time.at(1550814673).utc.to_datetime
=> Fri, 22 Feb 2019 05:51:13 +0000

J'ai essayé de transformer l'entier en datetime avec ceci:

Record.first.created_at
=> Fri, 22 Feb 2019 05:51:13 UTC +00:00
Record.first.created_at.class
=> ActiveSupport::TimeWithZone

Mais ce n'est pas tout à fait la même chose et ne se comparera pas honnêtement avec un opérateur ==


0 commentaires

3 Réponses :


0
votes

Utilisez plutôt DateHeure !

DateTime.parse("#{Record.first.created_at}") == DateTime.strptime("1318996912",'%s')

=> true

Devrait renvoyer quelque chose de facile à digérer, et vous pouvez alors le faire facilement:

DateTime.strptime("1318996912",'%s')

=> Wed, 19 Oct 2011 04:01:52 +0000


0 commentaires

2
votes

Vous pouvez essayer d'utiliser to_i à une heure, et cela devrait vous donner quelque chose que vous pourriez utiliser

date = Date.today
=> Tue, 14 May 2019
date.to_time.to_i
=> 1557784800
Time.at(1557784800)
=> 2019-05-14 00:00:00 +0200


0 commentaires

3
votes

1 commentaires

Cependant, les instances ActiveSupport :: TimeWithZone correspondent en fait aux instances Time si le fuseau horaire est le même. Par exemple Time.zone.at (1550814673) == Time.at (1550814673) .