自1970年1月1日00:00:00 GMT Erlang以来的秒数



我正在与远程服务器交互。此远程服务器位于不同的时区。部分身份验证要求我制作:

"自1970年1月1日00:00:00 GMT以来的秒数服务器只接受时间戳为在当前时间的600秒内"

erlang:now()。显示它可以给我CCD_ 2。它返回一个size=3元组{MegaSecs, Secs, MicroSecs}。我尝试使用element(2,erlang:now()),但远程服务器向我发送了以下消息:

时间戳过期:给定时间戳(1970-01-07T1:44:42Z)不在服务器时间的600秒内(2012-01-26T09:51:26Z)
自1970年1月1日以来,这3个参数中的哪一个是所需的秒数?我做什么不对?我是否与calendar:universal_time() ? 中的universal time有什么关系?
UPDATE
作为更新,我使用以下方法关闭了超时问题:
seconds_1970()->T1={{1970,1,1},{0,0,0}},T2=日历:universal_time(),{天,{HH,Mins,Secs}}=日历:时间差(T1,T2),(天*24*60*60)+(HH*60*600)+(分钟*60)+Secs。
然而,问题仍然存在。必须有一种方法,一种基本的二郎方法,可能是BIF,对吧?

您必须根据now()的结果计算UNIX时间(自1970年以来的秒数),如下所示:

{MegaSecs, Secs, MicroSecs} = now().
UnixTime = MegaSecs * 1000000 + Secs.

只要使用元组的第二个条目,就会告诉您自上一个十进制万亿元以来的时间(以秒为单位,自UNIX epoch以来)。

【2017编辑】不赞成使用now,但erlang:timestamp()不是,并且返回与now相同的格式。

这3个参数中的哪一个是自1970年1月1日以来所需的秒数?

他们三个人,加在一起。查看给定的时间戳。现在是1970年1月7日。假定Secs将在0(包括0)和1000000(不包括)之间。一百万秒只有11.574天。你需要使用兆秒和秒。由于容错为600秒,因此可以忽略erlang:now()响应的微秒部分。

相关内容

  • 没有找到相关文章

最新更新