我正在创建一个用户界面,允许用户选择日期范围,并勾选或取消勾选在日期范围内应用的星期几.
日期范围控件是DateTimePickers
,以及星期几CheckBoxes
这是UI的模型:
From Date: (dtpDateFrom)
To Date: (dtpDateTo)
[y] Monday, [n] Tuesday, [y] Wednesday, (etc)
什么是显示总计数天数的最佳方式,不仅基于日期范围,还基于一周的选定日期(或选定日期)?
循环过日期范围是我唯一的选择吗?
这是我如何接近它:
查找第一个和最后一个日期的星期几(dow)
将第一天向前移动到与上次相同的道路.存储的移动天数
计算第一个和最后一个之间的周数
计算一周中包含的天数*周数+包含的天数
作为伪代码:
moved = start + end_dow - start_dow extras = count included days between start and moved weeks = ( end - moved ) / 7 days = days_of_week_included * weeks + extras
无论开始和结束日期相隔多远,这都需要一段时间.
实现此算法的细节取决于您使用的语言和库.在可能的情况下,我使用C++和boost :: date_time来做这种事情.