代码之家  ›  专栏  ›  技术社区  ›  jitbit

给定一个日期范围(开始日期和结束日期),如何计算天数,不包括.Net中指定的一周天数?

  •  2
  • jitbit  · 技术社区  · 17 年前

    我正在创建一个用户界面,允许用户选择一个日期范围,并勾选或取消勾选该日期范围内适用的一周中的几天。

    DateTimePickers ,一周中的几天是 CheckBoxes

    下面是UI的一个模型:

    From Date: (dtpDateFrom)
    To Date: (dtpDateTo)

    [y] Monday, [n] Tuesday, [y] Wednesday, (etc)

    在日期范围内循环是我唯一的选择吗?

    2 回复  |  直到 17 年前
        1
  •  5
  •   Blair Conrad    17 年前

    • 查找第一个和最后一个日期的星期几(道指)
    • 计算第一周和最后一周之间的周数
    • 计算一周内包含的天数*周数+移动的包含天数

    作为伪代码:

     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
    

    无论开始日和结束日相距多远,这都需要固定的时间。

        2
  •  2
  •   Blair Conrad    17 年前

    循环并不是你唯一的选择——你可以执行 subtraction 要计算总天数,请每周为每个“跳过”日期减去一天,这两个日期之间包含一天。当您计算出一天是在范围的开始还是结束的部分周中的一周时,请添加 #weeks * skipped days in a week ,您的代码将比只计算的代码更复杂,但如果您希望有巨大的日期范围,它的性能可能会更好。

    推荐文章