- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 difftime( time_t t1, time_t t2)
方法返回的两个 time_t
之间的差值是 double
?我不明白精度要求从何而来。
最佳答案
因为 time_t
在标准中被简单地定义为一个能够表示时间的算术类型
。
这就是它所说的全部内容。它不必是整数,也不必代表秒。它只能是 10 的倍数,或者它可能是能够表示分辨率低至 10-43 秒的时间的浮点类型。
C99 7.23.1 Components of time
中的引述是(略有释义):
Types declared are
clock_t
andtime_t
, which are arithmetic types capable of representing times. The range and precision of times representable in clock_t and time_t are implementation-defined.
因此人们盲目计算时差:
delta = time_end - time_begin;
可能会发现他们的代码并不适用于所有平台。
现在我不知道有什么平台不是自纪元以来的简单秒数,但我一直被假设所困扰就像之前这样,例如假设A
到 Z
是连续的,而事实上,这不是必需的,并且在使用 EBCDIC 的大型机产品上效果不佳。而且,是的,它们是 still在 大量 使用中,尽管自 60 年代以来显然已经死亡 :-)
C99 基本原理文档是这样说的:
The types
clock_t
andtime_t
are arithmetic because values of these types must, in accordance with existing practice, on occasion be compared with -1 (a "don’t-know" indication), suitably cast.No arithmetic properties of these types are defined by the Standard, however, in order to allow implementations the maximum flexibility in choosing ranges, precisions, and representations most appropriate to their intended application. The representation need not be a count of some basic unit; an implementation might conceivably represent different components of a temporal value as subfields of an integer type.
关于c++ - 表示time_t之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719047/
我想将日期时间字符串保存到 time_t,然后将其转换回完全原始的字符串。 但是下面的代码会输出"2016-04-25_10:10:05" 并且通过更改 date_str,输出中的小时将不正确。 如果
我有两个 time_t 变量:timeA 和 timeB。 我想做的是检查 timeA 是否与 timeB 相同。但是,我知道在某些情况下它们不会完全相同,两者之间可能会有 1 或 2 秒的差异,所以
我正在尝试编写函数来帮助自己轻松地将 string 转换为 time_t 并将 time_t 转换为 string。然而,它总是给我错误的一年和一个错误的时间。怎么了? 我需要它独立于操作系统! 例如
time_t raw_time = time(NULL); tm* current_time = localtime(&raw_time); 我自己得到了答案......我完全搞砸了警告。无论如何谢谢
我的 time_t 值为 1530173696,代表 2018 年 6 月 28 日,星期四 8:14:56 AM。 我想将时间向下舍入到最接近的小时。具体来说,向下到 1530172800,代表 T
我正在开发嵌入式系统。我们的平台是 32 位,因此 time_t 大小是 32 位。 现在我想将一个结构作为 char 数组发送到 Windows 7 计算机。我的结构体的字段之一是time_t。我无
time_t 这是依赖于平台的类型。我发现 difftime 以秒为单位返回差异,但我没有找到无需任何转换即可进行简单减法的函数。我怎么知道标准不保证在整个时间连续体中始终如一,并且没有说明有关 ti
我正在尝试转换 static char bufferTR[] = "1645"; 像这样的事情...... struct tm *tick_time = localtime(&temp); 在此函数中
在我当前的项目中,我有一个 C 结构来保存时间戳,如下所示: struct timestamp { uint16_t year; uint8_t month; uint8_t day
我有从 2004 年到特定日期的毫秒数。我想将其转换为 time_t 以使用 ctime() 显示它? 也许还有另一种方法可以通过这个毫秒时间戳来可视化日期,有人有吗? 最佳答案 假设“从 2004
我应该如何修改此代码以在每 00:00AM 打印(“Its Midnight”)? #include #include int main(void) { struct tm * localti
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
我是 C 编程新手,我需要一些帮助来完成一个简单的任务。 所以我有这个功能: char *time2str(time_t time) { static_char *str_fmt = "%0
我正在使用处理 time_t 的 API。现在我也有一个来自 API 的结果,它也在 time_t 中检索数据,但问题是第一个只需要日期、小时和分钟,但我检索的数据包括秒,我如何从数据中删除秒>
我正在尝试将“Tue Feb 13 00:26:36 2018”转换为 time_t,我该怎么做,我尝试寻找一个函数但找不到。这是使用非托管 C++。 最佳答案 如果你使用的是 C++11,你可以这样
我有一个 double 的纪元,需要传入一个需要 time_t 的函数。如何将 double 中的纪元转换为 time_t?我在 Linux 上使用 C++ 代码。谢谢。 最佳答案 如果你在 doub
根据 http://www.cplusplus.com/reference/clibrary/ctime/time_t/ time_t 是自 1970 年 1 月 1 日午夜 UTC 以来的秒数。因此
我试图找出时间将溢出 time_t 值的日期 #include #include #include main(){ time_t now,end; now=time(NU
如果我有这个字符串: 2011-10-08T07:07:09Z 是否有可能从中获取time_t?如果可以,如何实现? 最佳答案 是的,是的。首先,使用 strptime(3) 将其转换为 segmen
我不明白为什么这会抛出undefined reference to `floor'”: double curr_time = (double)time(NULL); return floor(curr
我是一名优秀的程序员,十分优秀!