我有 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,并且与系统区域设置无关。
我更愿意使用尽可能少的外部代码(即库或框架)。
答案 0 :(得分:1)
伪代码
形成时间结构
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);
答案 1 :(得分:1)