如何在C语言中修改time_t时间戳?

5
这是我们如何使用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中?


请查看https://dev59.com/vHI-5IYBdhLWcg3wbXtN。 - Mikpa
可能是给日期加秒数的重复问题。 - Steve Jessop
(这不是严格的重复,但考虑到实际提供的答案,它是另一个问题的子集。) - Steve Jessop
1个回答

5

time_t通常是一个整数类型,表示自纪元以来的秒数,因此您应该能够添加335(五分钟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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接