我需要在日期中添加秒数。 例如,如果我有一个日期,如2009127000000,则需要将秒数添加到此日期中。 另一个例子是,在20091231235957的基础上再增加50秒。
这在C语言中是否可行?
time_t
值被指定为秒数,但这在C标准中并不保证,在非POSIX系统上可能不成立。通常情况下是这样的(实际上,我不确定有多少不表示秒数的值)。以下是一个例子,用标准库设施添加时间值,它不假定time_t
表示秒数,但这些库对于操作时间并不特别好用:#include <time.h>
#include <stdio.h>
int main()
{
time_t now = time( NULL);
struct tm now_tm = *localtime( &now);
struct tm then_tm = now_tm;
then_tm.tm_sec += 50; // add 50 seconds to the time
mktime( &then_tm); // normalize it
printf( "%s\n", asctime( &now_tm));
printf( "%s\n", asctime( &then_tm));
return 0;
}
将时间字符串解析为适当的struct tm
变量留作练习。可以使用strftime()
函数格式化一个新的变量(而POSIX strptime()
函数可帮助解析)。
mktime
函数返回你所需的time_t
时间类型。 - Steve Jessoptm_min
会得到类似于 当前时间:19:56:21 将在19:176:21触发
的结果,使用 std::put_time(my_tm,"%X")
。 - Vassilis<time.h>
:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/time.h.html - pmgC 语言的日期/时间类型 time_t 是从某个特定日期开始计算的秒数,因此要向其中添加秒数,只需使用普通算术即可。如果这不是您所询问的,请明确您的问题。
time_t
通常表示秒数,但不一定如此。 - Michael Burrinclude <time.h>
char* string = ...;
char buf[80];
struct tm;
strptime(string, "%Y%m...", &tm);
tm->tm_isdst = 0;
strftime(buf, sizeof(buf), "%Y%m...", localtime(mktime(&tm) + 50));