【问题标题】:date and time manipulation in c++C++中的日期和时间操作
【发布时间】:2013-05-22 11:29:31
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c++ date


【解决方案1】:

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

要将time_t转换为struct tm,有几个不同的函数,如localtime()gmtime()等。

要将struct tm 转换为time_t,请使用mktime()

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

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

【讨论】:

    【解决方案2】:

    假设您将输入读入名为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_stringstd::string 而不是 C 风格的字符串,则需要在对 strptime 的调用中将 time_string 替换为 time_string.c_str()

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-21
        • 2012-05-14
        • 2019-04-27
        • 2013-04-29
        • 2014-01-18
        相关资源
        最近更新 更多