在给定的日期时间字符串中添加一小时

时间:2013-01-18 05:42:09

标签: c++

我想在给定的日期时间戳(不是系统时间戳)中添加一小时。日期时间值由用户以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。

1 个答案:

答案 0 :(得分:1)

使用strptime(非标准:仅限UN * X),mktimestrftime。像这样:

#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