2

所以,我想做这样的课堂交付:

class Delivery{
private:
    string recipient;
    time_t date;
}

所以,日期是time_t。我想做的是让用户输入交货日期。也许今天交货,也许明天,也许下个月。我可以将日期属性字符串设为 date 而不是 time_t。为什么我没有这样做?因为,我有一个交货清单,我想对交货进行分类,然后打印在特定时期内进行的交货。例如,打印从 2013 年 3 月 12 日到 2013 年 8 月 25 日的交货。

问题是:如何让用户设置日期?我搜索了互联网,但没有找到任何有用的功能。有没有办法解决这个问题?

4

3 回答 3

1

假设您将输入读入以time_string格式命名的字符串01/01/13

struct tm tm;
strptime(time_string, "%D", &tm);
time_t t = mktime(&tm);

如果您包括全年,例如 2013 年 1 月 1 日,请替换strptime(time_string, "%D", &tm);strptime(time_string, "%m/%d/%Y", &tm);. %m是月、%d日和%Y全年,例如 2013 而不是 13。另请注意,如果time_string是 an而不是 C 风格的字符串,则std::string需要在调用.time_stringtime_string.c_str()strptime

资料来源:https ://stackoverflow.com/a/11213640/2097780和http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.bpxbd00 %2Fstrptip.htm

于 2013-05-27T15:30:56.930 回答
0

处理日期/时间涉及使用struct tmtime_t数据结构。

要转换time_tstruct tm,有几个不同的函数,例如localtime(),gmtime()等。

要从 转换struct tmtime_t,请使用mktime().

显然,您还需要编写一些代码,从用户那里读取年、月、日以及小时和分钟作为整数值,然后struct tm用相关值填充 a,并调用mktime()将其转换为“自 1 月 1 日以来的秒数1970" 的time_t值。

执行此操作的所有函数都在<ctime>

于 2013-05-27T15:20:07.880 回答
0

鉴于您使用的是 C++,您可能需要考虑使用:Boost DateTime

于 2013-05-27T16:01:38.043 回答