我想在给定的日期时间戳(不是系统时间戳)中添加一小时。日期时间值由用户以2013-01-18:11:00格式提供(%Y%m%d :hh:mm)。我不能使用boost.Is有任何方法可以有效地使用预定义的函数而不是编写我自己的代码。我尝试了下面的代码
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "time.h"
#include <time.h>
#include "ctime"
{
struct tm t;
memset(&t,NULL,sizeof(t));
double dif;
time_t t_of_day=0;
time_t basetime;
t.tm_year=70;
t.tm_mon=0;
t.tm_mday=2;
t.tm_hour=0;
t.tm_min=0;
t.tm_sec=0;
t.tm_isdst=-1;
cout<<t_of_day<<"\n";
t_of_day=mktime(&t);
perror("The following error occured");
cout<<"The currenttime is"<<t_of_day;
}
希望计算一个纪元秒,但它抛出无效的参数错误。我的编程语言是c。
答案 0 :(得分:1)
使用strptime
(非标准:仅限UN * X),mktime
和strftime
。像这样:
#include <time.h>
#include <stdio.h>
int main() {
struct tm stm;
char out[30];
strptime("2013-01-18:23:59", "%Y-%m-%d:%H:%M", &stm);
stm.tm_hour += 1;
mktime(&stm);
strftime(out, 30, "%Y-%m-%d:%H:%M", &stm);
puts(out);
}
修改:如果您无法使用strptime
,请使用sscanf
创建struct tm
。