gpt4 book ai didi

C++ 在 unixtime 中获取今年的开始

转载 作者:行者123 更新时间:2023-11-30 03:28:12 26 4
gpt4 key购买 nike

我正在寻找一种方法来检索当前年份的开始作为 unix 时间戳。

例如,如果我们在 2017-10-16 上,unix 时间戳是 1523318400。我必须改为检索 1483228800 (2017-01-01)。当然,它也必须在未来几年发挥作用。

最佳答案

time_t有加减月日分秒的函数,可以用来计算过去某个时间点的time_t,但是求出正确的数字看起来很尴尬要删除的单位。 (cpp reference : time_point)。我还查看了原始 C 函数 mktime .然而,在创建 time_t 然后创建 struct tm* 时,问题是正确生成时区正确的版本。

所以我的解决方案是这样的......

int getYear(time_t now)
{
struct tm * tnow = std::gmtime(&now);
return tnow->tm_year + 1900;
}

std::time_t calculateYear( int currentYear )
{
int epochYear = currentYear - 1970;
int leapYears = (epochYear + 1) / 4;
time_t result = epochYear * 24 * 60 * 60 * 365;
result += leapYears * 24 * 60 * 60;
return result;
}

该代码适用于 1970 年(第一个 time_t 值)和 2100 年之间的年份,根据 100 年规则,这不是闰年。

闰年的数量很奇怪,2012年是闰年,2013年才开始计算闰年。

关于C++ 在 unixtime 中获取今年的开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46777635/

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