gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:42:47 26 4
gpt4 key购买 nike

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

"自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数
服务器将只接受时间戳的请求
在当前时间的 600 秒内"
erlang:now() 的文档。表明它可以让我获得 the elapsed time since 00:00 GMT, January 1, 1970 (zero hour)
on the assumption that the underlying OS supports this
。它返回一个 size=3 元组, {MegaSecs, Secs, MicroSecs} 。我尝试使用 element(2,erlang:now()) 但远程服务器向我发送了此消息:
时间戳过期:给定时间戳 (1970-01-07T14:44:42Z)
不在服务器时间的 600 秒内 (2012-01-26T09:51:26Z)
这 3 个参数中的哪一个是自 1970 年 1 月 1 日以来所需的秒数?我做错了什么?我是否与 universal time 中的 calendar:universal_time() ? 有什么关系更新作为更新,我设法通过使用以下方法关闭了时间过期问题:seconds_1970()->
T1 = {{1970,1,1},{0,0,0}},
T2 = 日历:universal_time(),
{Days,{HH,Mins,Secs}} = calendar:time_difference(T1,T2),
(天 * 24 * 60 * 60) + (HH * 60 * 60) + (分钟 * 60) + 秒。

然而,问题仍然存在。必须有一种方法,一种基本的 Erlang 方法,可能是 BIF,对吗?

最佳答案

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

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

仅使用元组的第二个条目将告诉您自上一个十进制万亿美元以来的时间(以秒为单位)自 UNIX 时代以来。

[2017 编辑] now 已被弃用,但 erlang:timestamp() 不是,并返回与 now 相同的格式。

关于unix - 自 1970 年 1 月 1 日以来的秒数 00 :00:00 GMT Erlang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com