c++ - ctime 和 time_t 的数学运算

标签 c++ datetime ctime

有人知道如何用 ctime 做数学吗?我需要能够在“time_t”中获取以秒为单位的时间(就像通常那样),然后在将 time_t 输入到 ctime 中以获取时间和日期之前从中减去设定的秒数。

所以基本上它会计算这么多秒前的日期。

最佳答案

time_t 日期和时间的最基本表示是类型 time_t。 time_t 变量的值是自 1970 年 1 月 1 日以来的秒数,有时称为 Unix 纪元。这是在内部表示事件开始和结束时间的最佳方式,因为比较这些值很容易。 结构体 time_t 将日期和时间表示为单个数字,而 struct tm 将其表示为具有大量数字的结构:

struct tm
{
  int tm_sec;            /* Seconds.    [0-60] (1 leap second) */
  int tm_min;            /* Minutes.    [0-59] */
  int tm_hour;            /* Hours.    [0-23] */
  int tm_mday;            /* Day.        [1-31] */
  int tm_mon;            /* Month.    [0-11] */
  int tm_year;            /* Year    - 1900.  */
  int tm_wday;            /* Day of week.    [0-6] */
  int tm_yday;            /* Days in year.[0-365]    */
  int tm_isdst;            /* DST.        [-1/0/1]*/
};

转化 您可以使用 localtime 函数将 time_t 值转换为 struct tm 值:

struct tm startTM;
    time_t start;

    /* ... */

    startTM = *localtime(&start);

所以,你可以像这样减去设定的秒数

startTm.tm_sec -= somesecond;

像这样添加转换为time_t

struct tm startTM;
    time_t start;

    /* ... */

    start = mktime(&startTM);

并使用ctime fun来转换日期

ctime(&start)

希望对您有所帮助!

关于c++ - ctime 和 time_t 的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241195/

相关文章:

php 和 javascript 日期不匹配

c++ - 创建 CTime @ 2am 不返回正确的值(Windows CE、C++)

c++ - 在 C++ 中实现运算符 *

c++ - 运算符重载未处理的异常

python - 删除日期时间函数中的时间?

c++ - c++ : to store MM in int format from ctime() 中的字符串问题

Python 二进制文件 CTime 4 字节

c++ - 在 C++ 函数中使用多个作用域 block

c++ - 如何在 C++ 中确定 2D 无符号短指针数组长度

php - MySQL:获取添加了 x 小时的行