J'interagis avec un serveur distant. Ce serveur distant est dans un fuseau horaire différent. Une partie de l'authentification me oblige à produire le:Nombre de secondes depuis le 1er janvier 1970 00:00:00 GMT Erlang
"The number of seconds since January 1, 1970 00:00:00 GMT The server will only accept requests where the timestamp is within 600s of the current time"
La documentation de erlang:now()
. révèle qu'il peut me procurer le the elapsed time since 00:00 GMT, January 1, 1970 (zero hour) on the assumption that the underlying OS supports this
. Il renvoie un tuple size=3
, {MegaSecs, Secs, MicroSecs}
. J'ai essayé d'utiliser element(2,erlang:now())
mais le serveur distant m'envoie ce message:
Timestamp expired: Given timestamp (1970-01-07T14:44:42Z) not within 600s of server time (2012-01-26T09:51:26Z)Lequel de ces 3 paramètres est le nombre de secondes requis depuis le 1er janvier 1970? Qu'est-ce que je ne fais pas bien? Y at-il quelque chose que je dois faire avec le
universal time
comme dans calendar:universal_time() ?
MISE À JOUR
Comme une mise à jour, j'ai réussi à éteindre le problème de temps expiré en utilisant ceci:
seconds_1970()-> T1 = {{1970,1,1},{0,0,0}}, T2 = calendar:universal_time(), {Days,{HH,Mins,Secs}} = calendar:time_difference(T1,T2), (Days * 24 * 60 * 60) + (HH * 60 * 60) + (Mins * 60) + Secs.Cependant, la question reste encore. Il doit y avoir un moyen, une façon fondamentale d'obtenir Erlang, probablement un BIF, non?
Merci beaucoup –
Notez également que maintenant() est garanti pour donner des résultats différents dans différents threads même si l'appel est à la même heure. –
J'ai modifié cette réponse pour être valide aujourd'hui. – Tommy