gpt4 book ai didi

c++ - 如何将 `std::time_t` 变量中的时差表示为天、小时、分钟和秒?

转载 作者:行者123 更新时间:2023-11-30 04:08:59 34 4
gpt4 key购买 nike

我想以天、小时、分钟和秒为单位计算现在和给定日期之间的时差。

std::tm                 tm_Trg;
tm_Trg.tm_year = 120; // 2020
tm_Trg.tm_mon = 4; // May
tm_Trg.tm_mday = 15; // 15th
tm_Trg.tm_hour = 11; // 11:35:13
tm_Trg.tm_min = 35;
tm_Trg.tm_sec = 13;
tm_Trg.tm_isdst = -1;
std::time_t tt_Now;
std::time_t tt_Trg;
std::time_t tt_Dif;
tt_Now = std::time(nullptr);
tt_Trg = std::mktime(&tm_Trg);
tt_Dif = tt_Trg - tt_Now;
// ...
int nDays = ???
int nHours = ???
int nMinutes = ???
int nSeconds = ???

是否有用于此的 STL 函数?如果不是,这种转换最简单的算法是什么?

最佳答案

我在编译时遇到了一些小问题(我不得不删除所有 std::的实例)。

剩下的部分不是你想要的(你得到年和天,而不仅仅是天),但如果你出于某种原因真的想使用库函数:

struct tm *timeinfo     = gmtime(&tt_Dif);
int nYears = timeinfo->tm_year - 70;
int nDays = timeinfo->tm_yday;
int nHours = timeinfo->tm_hour;
int nMinutes = timeinfo->tm_min;
int nSeconds = timeinfo->tm_sec;

printf("nYears:\t%d\nnDays:\t%d\nnHours:\t%d\nnMinutes:\t%d\nnSeconds:\t%d\n", nYears, nDays, nHours, nMinutes, nSeconds);

否则,获取结果的一种非常简单的方法是:

int nSeconds            = tt_Dif % 60;  tt_Dif /= 60;
int nMinutes = tt_Dif % 60; tt_Dif /= 60;
int nHours = tt_Dif % 24; tt_Dif /= 24;
int nDays = tt_Dif;

printf("nDays:\t%d\nnHours:\t%d\nnMinutes:\t%d\nnSeconds:\t%d\n", nDays, nHours, nMinutes, nSeconds);

关于c++ - 如何将 `std::time_t` 变量中的时差表示为天、小时、分钟和秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565475/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com