gpt4 book ai didi

计算 C99 中两个日期字符串之间的工作日数

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:38 27 4
gpt4 key购买 nike

我有两个日期字符串,格式为 yyyy-mm-dd ,就像

const char* date_start = "2015-09-30";
const char* date_end = "2015-10-03";

如何计算两个日期之间的工作日天数(既不是周六也不是周日的天数)?可以存在开始和结束日期相等的日期(那么天数应该等于 1(工作日)或 0(周末))。所有输入的日期都保证有效(例如,不是 2 月 30 日)。

该解决方案需要在 OS X 和 Windows 上使用 C99,并且独立于系统区域设置。

我宁愿使用尽可能少的外部代码(即库或框架)。

最佳答案

伪代码

形成时间结构

struct tm start = {0};
start.tm_year = 2105-1900;
start.tm_mon = 9-1;
start.tm_mday = 30;
start.tm_isdst = 0;
struct tm end = ...

形成时间编号并设置tm_wday字段

time_t tstart = mktime(&start);
time_t tend = mktime(&end);

求日差

double day_diff = difftime(&tend, &tstart)/(24.0*60*60);

每个工作日的一些魔法(留给 OP)

numweekdays = ((long)day_diff/7)*5 + foo(start->tm_wday, end->tm_wday);

关于计算 C99 中两个日期字符串之间的工作日数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32780359/

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