首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ada中获得unix时代以来的秒数?

如何在Ada中获得unix时代以来的秒数?
EN

Stack Overflow用户
提问于 2015-12-12 12:37:53
回答 3查看 1.7K关注 0票数 5

我觉得自己很蠢,因为我似乎没有一个简单的自然数来表示自Ada的unix时代(01/01/1970,00:00:00)以来的秒数。我读过Ada.Calendar,它是上下的子包,但似乎找不到实现这一目标的合理方法,即使Ada.Calendar.Clock本身正是我想要的……

我快疯了。有正确的方向吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-12 14:30:23

使用Ada.Calendar.Formatting,构造一个表示纪元Time

代码语言:javascript
复制
Epoch : constant Time := Formatting.Time_Of(1970, 1, 1, 0.0);

检查Ada.Calendar.ClockEpoch之间的差异。

代码语言:javascript
复制
Put(Natural(Clock - Epoch)'Img);

对照这个http://www.epochconverter.com/或Unix命令date +%s检查结果。

有关其他详细信息,请参阅http://www.adaic.org/resources/add_content/standards/05rat/html/Rat-7-3.htmlhttp://www.ada-auth.org/standards/12rat/html/Rat12-6-6.html#I1540

票数 9
EN

Stack Overflow用户

发布于 2016-12-05 12:07:33

根据POSIX标准,UNIX时间不计算闰秒,而Ada.Calendar."-“处理它们

对于返回的值,如果天= 0,则秒+持续时间(Leap_Seconds)=日历。“-”(左,右)。

一种选择是使用Ada.Calendar.Time将Ada.Calendar.Formatting.Split分割成几个部分,然后使用POSIX算法将其收集回来。

最好的选择似乎是使用Ada.Calendar.Arithmetic.Difference。它返回天、秒和Leap_Seconds。然后,您可以将天* 86_400 +秒组合起来获取UNIX时间,Leap_Seconds将根据POSIX的要求显式丢弃。

我最近一直在解决这个问题,并发布了一个图书馆进入公共领域

票数 1
EN

Stack Overflow用户

发布于 2017-03-22 06:44:24

在Ada的GNAT实现中,有一个私有包Ada.Calendar.Conversions,其中包含Calendar的子级使用的Ada <-> Unix转换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34239915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档