如何修改C中的time_t时间戳?

时间:2010-11-06 15:59:56

标签: c datetime time

这是我们如何存储当前时间并使用time.h打印它:

$ cat addt.c
#include<stdio.h>
#include<time.h>

void print_time(time_t tt) {
    char buf[80];
    struct tm* st = localtime(&tt);
    strftime(buf, 80, "%c", st);
    printf("%s\n", buf);
}

int main() {
    time_t t = time(NULL);
    print_time(t);
    return 0;
}
$ gcc addt.c -o addt
$ ./addt
Sat Nov  6 15:55:58 2010
$

如何添加,例如5分35秒到time_t t并将其存回t

1 个答案:

答案 0 :(得分:5)

time_t 通常是一个整数类型,表示自纪元以来的秒数,所以你应该可以添加335(5分35秒)。

请记住,ISO C99标准规定:

  

clock_ttime_t中可表示的时间范围和精度是实现定义的。

因此虽然这通常会起作用(并且在我曾经使用的每个系统上都这样做),但可能会出现一些边缘情况并非如此。

请参阅以下对您的程序的修改,增加了五分钟(300秒):

#include<stdio.h>
#include<time.h>

void print_time(time_t tt) {
    char buf[80];
    struct tm* st = localtime(&tt);
    strftime(buf, 80, "%c", st);
    printf("%s\n", buf);
}

int main() {
    time_t t = time(NULL);
    print_time(t);
    t += 300;
    print_time(t);
    return 0;
}

输出结果为:

Sat Nov  6 10:10:34 2010
Sat Nov  6 10:15:34 2010