Comment puis-je obtenir un horodatage UNIX (nombre de secondes depuis 1970 GMT) à partir d'un objet Date dans une application Rails?
Je sais que Time#to_i
retourne un horodatage, mais le faire Date#to_time
et ensuite obtenir l'horodatage entraîne un décalage d'environ un mois ( je ne sais pas pourquoi ...).
Toute aide est la bienvenue, merci!
Edit: OK, je pense que je l'ai compris - je traitais une date plusieurs fois dans une boucle, et chaque fois que la date a été déplacée un peu à cause d'une différence de fuseau horaire, ce qui a finalement conduit à mon horodatage à un mois de congé. Pourtant, je serais intéressé de savoir s'il existe un moyen de le faire sans compter sur Date#to_time
.
la source
to_utc
date.to_time.utc
c'est probablement ce qu'il voulait dire.J'obtiens ce qui suit lorsque je l'essaye:
La différence entre ces deux nombres est due au fait que
Date
ne stocke pas les heures, minutes ou secondes de l'heure actuelle. La conversionDate
de a enTime
aura pour résultat ce jour-là, minuit.la source
Les options suggérées d'utiliser
to_utc
ouutc
de corriger le décalage horaire local ne fonctionnent pas. Pour moi, j'ai trouvé que l'utilisationTime.utc()
fonctionnait correctement et le code implique moins d'étapes:contre
Voici ce qui se passe lorsque vous appelez utc après avoir utilisé
Date
....... si clairement appeler
to_i
va donner le mauvais horodatage.la source
Solution pour Ruby 1.8 lorsque vous avez un objet DateTime arbitraire:
la source
la source