C++ 如何在c+中拆分日期/时间+;?

C++ 如何在c+中拆分日期/时间+;?,c++,datetime,C++,Datetime,我想将日期/时间字符串(例如1/08/1957/11:20:01,或任何类型的时间格式)转换为月份、小时、秒、分钟。问题是,首先我不知道如何定义一种可以分割的时间类型 我应该写: time_t now=1081987112001 s; //it is not correct. why? what's the c++ time data format? struct tm* tm = localtime(&now); cout << "Today is " <

我想将日期/时间字符串(例如
1/08/1957/11:20:01
,或任何类型的时间格式)转换为月份、小时、秒、分钟。问题是,首先我不知道如何定义一种可以分割的时间类型

我应该写:

time_t now=1081987112001 s; //it is not correct. why? what's the c++ time data format?
struct tm* tm = localtime(&now);

cout << "Today is "
     << tm->tm_mon+1 // month
     << "/" << tm->tm_mday // day
     << "/" << tm->tm_year + 1900 // year with century
     << " " << tm->tm_hour // hour
     << ":" << tm->tm_min // minute
     << ":" << tm->tm_sec; // second
time\u t now=1081987112001秒//这是不对的。为什么?C++时间数据格式是什么?
struct tm*tm=localtime(&now);
不能包含
#包括
#包括
...
{
std::字符串日期\时间;
std::getline(std::cin,日期和时间);
sscanf(日期和时间.c_str(),%d/%d/%d/%d:%d:%d“,&month,&date,&year,&hour,&minute,&second);
}
#包括
#包括
#包括
...
{
std::字符串日期\时间;
std::getline(std::cin,日期和时间);
sscanf(日期和时间.c_str(),%d/%d/%d/%d:%d:%d“,&month,&date,&year,&hour,&minute,&second);
}

time\u t
是一个整数,计算自UNIX纪元以来经过的秒数:1970年1月1日00:00:00。您肯定无法写入分配此值所做的操作

您必须使用函数
localtime
gmtime
在方便的
time\t
值和包含日、月、小时等各种信息的
struct tm
之间进行转换


您还可以使用
strftime
strptime
函数在字符串和
struct tm
之间进行转换
time\u t
是一个整数,并计算自UNIX纪元以来经过的秒数:1970年1月1日00:00。您肯定无法写入分配此值所做的操作

您必须使用函数
localtime
gmtime
在方便的
time\t
值和包含日、月、小时等各种信息的
struct tm
之间进行转换


您还可以使用
strftime
strptime
函数在字符串和
struct tm
之间进行转换,如果您希望从用户输入中获取时间(这似乎是您想要的),并将其转换为有效的
struct tm
,则可以使用
strptime()
可在
time.h
中找到

例如,如果你有:

char user_input_time[] = "25 May 2011 10:15:45";

struct tm;
strptime(user_input_time, "%d %b %Y %H:%M:%S", &tm);

printf("year: %d; month: %d; day: %d;\n", tm.tm_year, tm.tm_mon, tm.tm_mday);

如果您希望从用户输入中提取时间(这似乎是您想要的),并将其转换为有效的
struct tm
,则可以使用
time.h
中的
strtime()

例如,如果你有:

char user_input_time[] = "25 May 2011 10:15:45";

struct tm;
strptime(user_input_time, "%d %b %Y %H:%M:%S", &tm);

printf("year: %d; month: %d; day: %d;\n", tm.tm_year, tm.tm_mon, tm.tm_mday);

你真的是指“数据时间”还是“日期和时间”?数据和时间。你能帮忙吗?我很确定你指的是“日期”,不是“数据”。你真的是指“数据时间”还是“日期和时间”?数据和时间。你能帮忙吗?我很确定你指的是“日期”,不是“数据”,“机器人”?!这个日期被称为UNIX时代。我通常称之为BOT,作为时间的开始。好吧,我来换。这可不是时间的开始!我想是时代的开始吧。(等等,你是说70年代以前发生的事?“机器人”?!这个日期被称为UNIX时代。我通常称之为BOT,作为时间的开始。好吧,我来换。这可不是时间的开始!我想是时代的开始吧。(等等,你是说70年代以前发生的事情吗?)这是一个人发送数据和时间的唯一方式?如果他发送yyyy.month.day.hour会怎么样?:)所以我想一定有什么东西可以把任何值作为数据/时间值,如果它是正确的,然后它会把它分成小时、秒等等,不是吗?在c中,方法是System.DataTime,在obj c中是NSDate。在c++>中,这个(或者更好,
strtime
)如果知道或指定输入格式,则是解析日期的一种方法。如果您事先不知道输入格式,则需要使用第三方库。谷歌“c++解析日期”来寻找一个。这是一个人可以发送数据和时间的唯一方式吗?如果他发送yyyy.month.day.hour会怎么样?:)所以我想一定有什么东西可以把任何值作为数据/时间值,如果它是正确的,然后它会把它分成小时、秒等等,不是吗?在c中,方法是System.DataTime,在obj c中是NSDate。在c++>中,这个(或者更好,
strtime
)如果知道或指定输入格式,则是解析日期的一种方法。如果您事先不知道输入格式,则需要使用第三方库。用谷歌“c++解析日期”查找一个。标准库中没有strptime()。看不,不幸的是它不是。。。这是一个POSIX函数。但是谢谢你链接到这个功能的一个更便携的版本。。。这肯定会有帮助。strtime()不在标准库中。看不,不幸的是它不是。。。这是一个POSIX函数。但是谢谢你链接到这个功能的一个更便携的版本。。。这肯定会有帮助。