【问题标题】:Adding time in format hh:mm in C++在 C++ 中以 hh:mm 格式添加时间
【发布时间】:2017-04-25 05:32:46
【问题描述】:

我如何在 C++ 中做到这一点?

例子:

time1 = 04:45; 
time2 = 02:25; 
result = time1 + time2;
result = 07:10

时间值应保存在哪种日期类型(字符串、双精度等)中?

编辑: 是否有可能从这段代码中得到int h = 23int m = 14?也就是说,如何打印 %H 和 %M?

int main()
{
    std::tm t = {};
    std::istringstream ss("23:12");
    ss >> std::get_time(&t, "%H:%M");
    if (ss.fail()) {
        std::cout << "Parse failed\n";
    } else {
        std::cout << std::put_time(&t, "%R") << '\n';
    }
}

【问题讨论】:

  • 我们不是来为你写代码的。你试过什么?展示你的作品!然后问具体的问题。
  • 您是否想过几分钟,您将如何使用铅笔和纸“手动”(更准确地说是自己,不使用计算机)添加这些时间?
  • 那么分钟呢?你如何在纸上处理它们?
  • 所以,您只需要在 C++ 代码中转换这种洞察力。

标签: c++


【解决方案1】:

(代表 OP 发布解决方案).

我的工作 - 它有效! (灵感来自 snps 的链接和朋友的帮助)链接

int convert_time_to_minutes(string sss)
{

    istringstream ss(sss);
    string hh,mm;
    getline(ss, hh,':');
    getline(ss, mm,';');


    double h,m; //hours, minutes
    h = atoi(hh.c_str());
    m = atoi(mm.c_str());
    double minutes = (h *60 + m)/60;
    cout << minutes;
    return minutes;

}

两次使用这个函数两次,而不是添加两个返回值,我在几分钟内就有了结果。

【讨论】:

    【解决方案2】:

    查看 &lt;chrono&gt; 标准 C++11 标头。另见this question

    您可以将"04:25" 字符串(阅读更多关于std::string 的更多信息,它具有非常丰富的API)转换为一段时间(实际上是time_point,或clock,或duration ) 并在那个时候工作。

    在 POSIX 系统(尤其是 Linux)上,您可能会改用(即使使用旧的 C++ 或纯 C)与时间相关的函数(阅读 time(7)...),例如 strftime(3)strptime(3)(另请参阅localtime(3) & timelocal(3)...)

    或者,您可以简单地计算分钟,并知道"04:45" 应该是parsed04(十进制,使用std::stoi 进行转换,甚至可以使用C 的strtol 函数或其@ 987654332@) * 60 + 45"07:10"7*60 +10 即 430;要进行反向转换,请考虑 430/60(给出 7)和 430%60 给出 10。

    不要忘记在编译时启用所有警告和调试信息(例如,如果使用GCC...,则使用g++ -Wall -Wextra -g 编译)并使用调试器(例如gdb)来了解程序的行为(例如通过逐步运行它并查询它的状态)。

    您的问题非常基本(并且在基本编程和数学方面显示出一些困难,与 C++ 无关)。我强烈建议花几天时间阅读一些基本的数学教科书(高中水平,解释 quotientmodulusbases & radixes),然后是 SICP(一个很好的编程介绍,不使用 C++),然后是 @987654338 @。不要忘记阅读一些关于 C++ 的 reference documentation

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 2023-03-10
      • 2019-09-27
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多